Re: [R] convert a vector of words into a matrix

From: Wacek Kusnierczyk <Waclaw.Marcin.Kusnierczyk_at_idi.ntnu.no>
Date: Thu, 24 Jul 2008 13:10:06 +0200

Wacek Kusnierczyk wrote:
> Daren Tan wrote:
>

>> I want the matrix to look like this:
>>  
>>       [,1] [,2] [,3] [,4]
>> [1,] "1" "2" "3"
>> [2,] "1" "2" [3,] "1" "2" "4" "5"
>>  
>> I tried to use do.call(rbind, strings) but failed due to unequal row lengths.
>>   
>>     

> you can't {r,c}bind them because of different lengths.
> one way to reach the goal is to pad all vectors with some dummy value
> (NA, say), and then bind them.
>

> one way (assuming strings is the list you get out of strsplit):
>

> lengths = sapply(strings, length)
> ncol = max(lengths)
>

> t(
> mapply(
> function(vector, length)
> c(vector, rep(NA, ncol-length)),
> strings,
> lengths))
>

> there may be a better way, though.
>
>

an alternative and more efficient solution using a for loop:

lengths = sapply(strings, length)
m = matrix(NA, nrow=length(strings), ncol=max(lengths)) for (row in 1:length(strings))

    m[i, 1:lengths[i]] = strings[[i]]

vQ



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. Received on Thu 24 Jul 2008 - 11:22:45 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 24 Jul 2008 - 12:32:26 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive