In R: Joining vector elements by row, converting vector rows to strings
Is there a "by row" operation in R to convert each row in a vector like this to strings?
> d= cbind("Data", c("2", "73"))
> d
[,开发者_如何学C1] [,2]
[1,] "Data" "2"
[2,] "Data" "73"
What I want is to get strings like
[,1]
[1,] "Data 2"
[2,] "Data 73"
Is there an easy way to join items by row?
Yes, there is. It is called "apply" ;-)
apply(d,1,paste,collapse=" ")
[1] "Data 2" "Data 73"
# convert to matrix using as.matrix to get exactly your solution
See ?apply
and ?paste
A general way to do it without resorting to ?apply
:
do.call(paste, as.data.frame(d))
[1] "Data 2" "Data 73"
Where as.data.frame
is used to avoid subscripts.
Edit:
do.call
is a function which takes another function as first argument, and a list as second argument. It is often used to send lists of arguments to functions (in our case, the columns of d
to paste()
). We send d as a data.frame (a type of list) for this trick to work.
After a quick glace at ?paste
, it's clear that apply
isn't needed for the example given. It would be handy if there are several columns though.
> paste(d[,1],d[,2])
[1] "Data 2" "Data 73"
精彩评论