此问题已在此处有答案:
Automated formula construction(2个答案)
R input names from a character vector to a function formula statement(1个答案)
Is there a better alternative than string manipulation to programmatically build formulas?(1个答案)
9天前关闭
我在R中有一个 Dataframe df,其中包含分类变量:变量的列名是‘A’、‘B’、‘C’,另一个分类变量是‘gene’
我想在R中运行pairwise fisher exact test。当我像这样一个接一个地运行它时:
A <- xtabs(~ A + gene, data = df)
pairwise_fisher_test(A ,p.adjust.method = 'fdr')
B <- xtabs(~ B + gene, data = df)
pairwise_fisher_test(B ,p.adjust.method = 'fdr')
C <- xtabs(~ C + gene, data = df)
pairwise_fisher_test(C ,p.adjust.method = 'fdr')
这工作!!!
现在我试着像这样使用lapply:
vec <- ('A','B','C')
lapply(vec,function(x){
xtabs(~ x + gene, data = df)
pairwise_fisher_test(xtabs(~ x + gene, data = df) , p.adjust.method = 'fdr')
})
我得到这个错误:
Error in model.frame.default(formula = ~x + gene, data = df): variable lengths differ (found for 'gene')
我做错了什么??
1条答案
按热度按时间km0tfn4u1#
我找到解决办法了。实际上在lapply中,我传递公式的方式是错误的。以下是正确的方法:
这里,我们使用
as.formula()
通过将变量x与字符串“gene”组合来创建公式对象。这样,公式就被正确地构造并传递给xtabs()
和pairwise_fisher_test()
。