4
使用基因組數組數據時,通常會將「探針」分配給不同的基因(不同的轉錄本)。對象df
顯示了一個這樣的例子。在R中的列數據框中拆分字符串併爲子字符串創建其他列
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>
只是爲了保持完整性,今天的'tidyr' V5.0有另一個選項:'df%>%separate_rows(gene.names,sep =「;」)' – jalapic