我正在尝试传递一个变量Phyla
(这也是感兴趣的 df 列的名称)到其他函数中。但是我收到错误:Error: Column
税级is unknown
。我明白了。在函数中声明您想要使用一次的列会更方便,因为这也会在脚本中重复多次。我尝试过使用OTU_melt_grouped[,1]
因为这始终是在中使用的第一列dcast
函数,但出现错误:Error: Must use a vector in
[, not an object of class matrix.
此外,它并没有解决我的解决方案group_by
函数,因为我希望能够指定 Phyla、Class、Order 等...
我确信一定有一个简单的解决方案,但我不知道从哪里开始!
taxa_specific_columns_func <- function(data, tax_level = Phyla) {
OTU_melt_grouped <- data %>%
group_by(tax_level, variable) %>%
summarise(value = sum(value))
taxa_cols <- dcast(OTU_melt_grouped, variable ~ tax_level)
rownames(taxa_cols) <- meta_data$site
taxa_cols <- taxa_cols[-1]
return(taxa_cols)
}
tax_test <- taxa_specific_columns_func(OTU_melt)
当我们传递一个不带引号的变量时,我们可以使用 curly-curly ({{..}}
) 运算符group_by
library(dplyr)
library(tidyr)
library(tibble)
taxa_specific_columns_func <- function(data, tax_level = Phyla) {
data %>%
group_by({{tax_level}}, variable) %>%
summarise(value = sum(value)) %>%
pivot_wider(names_from = {{tax_level}}, values_from = value) %>%
column_to_rownames("variable")
}
taxa_specific_columns_func(OTU_melt)
# A B C D E
#a 0.01859254 0.42141238 -0.196961 -0.1859115 -0.2901680
#b -0.64700080 NA -0.161108 NA NA
#c -0.03297331 0.05871052 -1.963341 NA 0.7608218
data
set.seed(48)
OTU_melt <- data.frame(Phyla = rep(LETTERS[1:5], each = 3),
variable = sample(letters[1:3], 15, replace = TRUE), value = rnorm(15))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)