1

我有一个一列多行的矩阵,每一行都是等长的字符串,使用以下代码看起来像:

a = list("GTCA", "GACA")
library(plyr)
df <- ldply(a)

我想将其转换为具有多列的矩阵,列数等于字符串长度。通过执行以下代码,想要的结果应该如下所示:

a = list(c("G","T","C","A"), c("G","A","C","A"))
library(plyr)
df <- ldply(a)

我怎样才能在 R 中做到这一点?谢谢!

4

3 回答 3

5
do.call(rbind, sapply(a, strsplit, "") )
#-------
     [,1] [,2] [,3] [,4]
[1,] "G"  "T"  "C"  "A" 
[2,] "G"  "A"  "C"  "A" 

你确实说过你想要一个矩阵,对吧?如果你想用 -functions 来做到这一点plyr,那么这会成功:

 da <- laply(a, strsplit, split="")
 da
#---------    
     1   2   3   4  
[1,] "G" "T" "C" "A"
[2,] "G" "A" "C" "A"

如果你想要一个数据框,那么使用ldply相同的参数。

于 2013-08-14T22:10:45.273 回答
1

使用ldply表单 plyr:

library(plyr)
ldply(strsplit(df$V1,""))
 V1 V2 V3 V4
1  G  T  C  A
2  G  A  C  A
于 2013-08-14T22:15:13.060 回答
1

这是来自qdap 包的答案,但如果您尚未使用 qdap,则基本解决方案将是最佳的。

library(qdap)
colSplit(unlist(a), "")

##   X1 X2 X3 X4
## 1  G  T  C  A
## 2  G  A  C  A
于 2013-08-14T22:33:09.220 回答