【发布时间】:2019-06-12 01:38:29
【问题描述】:
简单的问题,但我只能找到传递命令行参数的示例使用'file='而不是任何公式。
例如数据.txt
id var1 group
1 5 1
2 6 1
3 4 1
4 12 2
5 14 2
6 20 2
为什么在命令行中为anova指定组变量不起作用:./anova.R data.txt group
#!/usr/bin/env Rscript
args <- commandArgs(trailingOnly=TRUE)
data1 <- read.table(args[1],sep="\t", header =TRUE)
result <- summary(aov(richness ~ args[2], data=data1))
write("richness",file="alphatests.txt",append=TRUE)
capture.output(result, file="alphatests.txt",append=TRUE)
可变长度不同(为 'args[2]' 找到)调用:摘要 ... -> 评估 -> 评估 -> -> model.frame.default 执行停止
但这确实有效(当两个示例中都有列名“组”时):
#!/usr/bin/env Rscript
args <- commandArgs(trailingOnly=TRUE)
data1 <- read.table(args[1],sep="\t", header =TRUE)
result <- summary(aov(richness ~ group, data=data1))
write("richness",file="alphatests.txt",append=TRUE)
capture.output(result, file="alphatests.txt",append=TRUE)
为什么我不能将命令行参数传递给公式?
【问题讨论】:
-
你可以试试
result <- summary(aov(richness ~ get(args[2]), data=data1)) -
是的,这行得通。非常感谢!