将参数传递给参数图的 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$y
和 ds$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))
并且有效。
我想制作一个 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$y
和 ds$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))
并且有效。