尝试使用命令行参数时,在R中找不到对象错误

时间:2014-07-30 15:12:36

标签: r ggplot2

我试图将命令行上的数字传递给一个非常简单的R脚本来进行一些绘图。

我有这个plot.r文件:

args<-commandArgs(TRUE)

vmcn<-as.integer(args[1])

library(ggplot2)
library(grid)

file<-read.table("my file.txt",header=F)

ggplot(file,aes(x=V1))+geom_histogram(binwidth=1,aes(y=..count../vmcn*100))+theme_bw()

ggsave(filename="myfile.pdf",width=4,height=4)

当我以这种方式运行时:

Rscript plot.r 5000

我收到了错误:

Error in eval(expr, envir, enclos) : object 'vmcn' not found
Calls: print ... <Anonymous> -> as.data.frame -> lapply -> FUN -> eval
Execution halted

有人可以告诉我什么是错的吗?

1 个答案:

答案 0 :(得分:4)

这实际上与您通过命令行运行R这一事实无关。您的脚本也不能以交互方式工作。这与aes ggplot2函数搜索对象的方式有关。相当令人惊讶的是,它默认情况下不会在全球环境中进行搜索。以下是解决问题的方法:

# some reproducible data 
set.seed(1)
vmcn <- 100
file <- data.frame(V1 = rnorm(1000))
# and the fixed plotting command 
ggplot(file, aes(x=V1)) +
  geom_histogram(binwidth=1, aes(y=..count..*100/get("vmcn", envir=.GlobalEnv))) +
  theme_bw()