【发布时间】:2016-06-11 22:50:45
【问题描述】:
在处理基因组阵列数据时,“探针”通常分配给不同的基因(不同的转录本)。对象df 显示了一个例子。
df <- data.frame(c("geneA;geneB;geneB", "geneG", "geneC;geneD"))
colnames(df) <- "gene.names"
df#looks like this:
gene.names
1 geneA;geneB;geneB
2 geneG
3 geneC;geneD
我想将df$gene.names 中的所有元素拆分为;,并将每个子字符串放在一个新列中。如果连续没有更多基因,可以使用NA。
这个脚本有效,但我想大多数人会同意这是一个贪婪的代码并且效率不高。有人可以提出更好的选择吗?
library(plyr)#load this library first
out <- NULL
for (i in 1:NROW(df)){
one <- as.data.frame(t(as.data.frame(strsplit(as.character(df[i,1]), ";"))))
out <- rbind.fill(out, one)
}
out#looks like this:
V1 V2 V3
1 geneA geneB geneB
2 geneG <NA> <NA>
3 geneC geneD <NA>
【问题讨论】: