[R] Using paste on results from tapply?

arun smartpink111 at yahoo.com
Fri Feb 15 07:39:33 CET 2013


HI,

You could either get the results by:
unlist(lapply(groups,function(x) paste(x,collapse=" ")),use.names=FALSE)
#[1] "6"     "4 4"   "5 3 2"
#or
gsub("[c(),]","",paste(groups))
#[1] "6"     "4 4"   "5 3 2"

str(gsub("[c(),]","",paste(groups)))
# chr [1:3] "6" "4 4" "5 3 2"
 str(unlist(lapply(groups,function(x) paste(x,collapse=" ")),use.names=FALSE))
# chr [1:3] "6" "4 4" "5 3 2"
A.K.




----- Original Message -----
From: Nikola Janevski <njanevsk at gmail.com>
To: r-help at r-project.org
Cc: 
Sent: Thursday, February 14, 2013 8:28 PM
Subject: [R] Using paste on results from tapply?

Hi,

This is what I'm trying to do:
1. I have a vector split.indexes <- c(1, 3, 3, 6, 6, 6)
2. I have another vector with something like data <- c(6, 4, 4, 5, 3, 2)
3. I use groups <- tapply(data, split.indexes, "c") to create a list of
vectors based on the levels in split.indexes. As a result groups has the
following values:
$`1`
[1] 6

$`3`
[1] 4 4

$`6`
[1] 5 3 2

This is the desired result.

4. The next thing I want to do is call paste on groups so I can get a
string representation that I can write to a file. However, when I call
paste(groups) it returns the following:
[1] "6"          "c(4, 4)"    "c(5, 3, 2)"

I do not understand why the paste function is adding the "c()" part. I
would like the result to be:
[1] "6"          "4 4"    "5 3 2"

Do you know any efficient way to get rid of the "c()"?

Note: I'm working with a very large data set 1-10 millions of points and I
would rather not use for loops since the performance are really bad.

Sincerely,
Nikola

    [[alternative HTML version deleted]]

______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.




More information about the R-help mailing list