将参数传递给r脚本以获取参数化图

时间:2015-09-17 15:35:22

标签: r plot parameters

我想创建一个R脚本来生成一个简单的散点图,将列作为参数传递给绘图。

这就是我现在正在做的事情:

ds <- read.csv("filename", sep=";")
args<-commandArgs(TRUE)
x <- args[1]
y <- args[2]
output <- args[3]

png(output)
plot(ds$x, ds$y)
dev.off()

然后我以这种方式启动脚本: Rscript myscript.R arg1 arg2 output.png, 但我暂停了执行,因为它无法获取任何数据。

如果我在绘图功能中使用了正确的列名(已经阅读了列标题离线),那么当然效果很好。

如果我要求typeof(ds$x)我得到NULL,那么问题似乎是args的类型不正确;我做错了什么?

2 个答案:

答案 0 :(得分:2)

ds$yds$x无法使用此格式,因为x和y是字符。

如果您尝试使用控制台:

x <- 'arg1'
> ds$x
NULL

你会看到它不起作用并返回NULL。

因此请尝试:

ds <- read.csv("filename", sep=";")
args<-commandArgs(TRUE)
x <- args[1]
y <- args[2]
output <- args[3]

png(output)
plot(ds[,x], ds[,y])
dev.off()

答案 1 :(得分:1)

你是对的,问题在于x和y的类型。添加

cat(class(x),"\n")

到您的脚本,您会看到x的类型是字符。因此,将绘图调用更改为

plot(get(x,ds),get(y,ds))

它有效。