将参数传递给参数图的 r 脚本

Passing arguments to r script for a parametric plot

我想制作一个 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, 但是我停止了执行,因为它无法获取任何数据。

如果我在 plot 函数中使用正确的列名(已阅读 header offline 列),当然效果很好。

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

ds$yds$x 在这种形式下不起作用,因为 x 和 y 是字符。

如果您在控制台上尝试:

x <- 'arg1'
> ds$x
NULL

你会发现它不会工作,并且会 return 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()

你说得对,问题出在 x 和 y 的类型上。添加

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

到你的脚本,你会看到 x 的类型是字符。因此,将对 plot 的调用更改为

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

并且有效。