私はdplyrパッケージを使用しようとしていますが、変数の扱いに問題があります。要素ベクトルを捕捉して、R dplyr関数で読み取る方法は?
new.data <- my.data %>% group_by(gene) %>% mutate(count = n())
しかし、その後、私はパーセンテージとして、文字列の出現を取得したい:
レッツは、私が最初にGROUP_BYと遺伝子あたりのSNPの数を数える私は簡素化データフレーム
my.data <- as.data.frame(matrix(NA), ncol=4, nrow=6)
my.data <- as.data.frame(cbind(c("d6", "d7", "d8", "d9", "da", "db"), c(rep("C200", 2), rep("C400", 4)), c(rep("a",5), "b"), c("c", rep("a", 5))))
colnames(my.data) <- c("snp", "gene", "ind1", "ind2")
を持っていると言います各列の遺伝子:
new.data %>% group_by(gene) %>% filter(grepl("a", ind1)) %>% dplyr::mutate(perc.a.ind1 = n()/count*100)
new.data %>% group_by(gene) %>% filter(grepl("a", ind2)) %>% dplyr::mutate(perc.a.ind2 = n()/count*100)
となります。私は多くの人がいて、私はそれを自動化する必要があります。 だから私は名前のベクトルを作成し、forループの中に私の関数を実行
ind.vec <- colnames(my.data[,3:4])
for (i in 1:length(ind.vec){
new.data %>% group_by(gene) %>% filter(grepl("a", ind.vec[i])) %>% mutate(percent = n()/count*100)
}
(私はループが最善ではありません知っている、私はバージョンまたは何か他のものを適用するにアップグレードさせていただきます)私はind.vecのどの要素も認識されていないのと同じように、空のチベットで終わった。
私は問題を特定したと思うと思われるビネットhttps://cran.r-project.org/web/packages/dplyr/vignettes/programming.htmlを読んだが、私はそれを理解しておらず、それを自分のデータで機能させることができない。
私はどのように私はベクトルの要素がdplyrによって認識することができます
ind.vec <- quote(colnames(my.data[,3:4]))
new.data %>% group_by(gene) %>% filter(grepl("a", !!(ind.vec[i]))) %>% mutate(percent = n()/count*100)
でいくつかの裁判をしましたか?
助けてもらえますか?
@IanWesley、そのポストに言及してくれてありがとう。それは私の問題ではなくなりましたが、私の場合はind.vec [i]を処理しなければならず、インデックスはas.name(ind.vec)で再調整されていないので問題になります。 –