我有一个一列多行的矩阵,每一行都是等长的字符串,使用以下代码看起来像:
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 中做到这一点?谢谢!
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
相同的参数。
使用ldply
表单 plyr:
library(plyr)
ldply(strsplit(df$V1,""))
V1 V2 V3 V4
1 G T C A
2 G A C A
这是来自qdap 包的答案,但如果您尚未使用 qdap,则基本解决方案将是最佳的。
library(qdap)
colSplit(unlist(a), "")
## X1 X2 X3 X4
## 1 G T C A
## 2 G A C A