R,Rscript,在变量硬编码时工作,但在作为参数传递时不工作

时间:2014-05-15 19:45:30

标签: r command-line arguments rscript

我构建了以下R脚本来获取由自动报告生成的.csv并将其拆分为多个.csv文件。

此代码完美无缺,并为" facility"的每个唯一值输出.csv文件。 in" todays_data.csv":

disps <- read.csv("/Users/me/Downloads/todays_data.csv", header = TRUE, sep=",")
for (facility in levels(disps$Facility)) {
temp <- subset(disps, disps$Facility == facility & disps$Alert.End == "")
temp <- temp[order(temp$Unit, temp$Area),]
fn <- paste("/Users/me/Documents/information/", facility, "_todays_data.csv", sep = "")
write.csv(temp, fn, row.names=FALSE)
}

但这不输出任何东西:

args <- commandArgs(trailingOnly = TRUE)
file <- args[1]
disps <- read.csv(file, header = TRUE, sep=",")
for (facility in levels(disps$Facility)) {
temp <- subset(disps, disps$Facility == facility & disps$Alert.End == "")
temp <- temp[order(temp$Unit, temp$Area),]
fn <- paste("/Users/me/Documents/information/", facility, "_todays_data.csv", sep = "")
write.csv(temp, fn, row.names=FALSE)
}

两个文件之间的唯一区别是第一个硬编码要分割的.csv文件的路径,而第二个文件使用Rscript在命令行中作为参数传递。

read.csv()命令与传递的文件路径一起使用,因为我可以在通过Rscript运行脚本时成功运行head(disps)等命令。

在通过Rscript运行时,for循环中的任何内容都不会执行,但它之前和之后的内容都将会执行。

有没有人有任何关于我错过的线索?谢谢。

0 个答案:

没有答案