我试图将命令行上的数字传递给一个非常简单的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
有人可以告诉我什么是错的吗?
答案 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()