# 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.