ゲノム配列データを操作する場合、「プローブ」は異なる遺伝子(異なる転写物)に割り当てられることがよくあります。オブジェクト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>
と
base R
オプションです別のオプション: 'df%>%separate_rows(gene.names、sep ="; ")' – jalapic