我正在努力使用一些我在R Script中传递的命令行参数。我的脚本文件如下所示:
library(dplyr)
args <- commandArgs(trailingOnly = TRUE)
grpd_by_variable<-get(args[1])%>%
group_by(args[2])%>%
mutate(DAY_GRPD_TOTAL=n())%>%
filter(row_number()==1)
print(nrow(grpd_by_variable))
我的命令行语句如下:
RScript filename.R my_data_frame col1
这里my_data_frame
是我想要处理的数据框,然后使用dplyr包执行一些分组。 col1
是数据框中列的名称。当我运行此命令行语句时,print语句仅提供1作为输出,这意味着只存在一行。但是,当我自己替换变量并运行如下脚本时,它会打印一个值7,对应于一周中的七天。
grpd_by_variable<-get(my_data_frame)%>%
group_by(col1)%>%
mutate(DAY_GRPD_TOTAL=n())%>%
filter(row_number()==1)
print(nrow(grpd_by_variable))
我相信它可以用group_by(args [2 [),它无法正确理解args [2]。谁能告诉我如何在脚本中引用数据框的列名,这些列名作为命令行参数传递?
我尝试过group_by(args[2])
,group_by(as.name(args[2]))
,group_by(as.character(args[2]))
和group_by(get(args[2]))
。但到目前为止我没有运气。由于我是R的新手,我无法弄明白,但看起来这是一个微不足道的问题。
答案 0 :(得分:0)
试试这个例子:
#dummy arg inputs
args <- c("mtcars","gear")
#notice the "_" - "group_by_"
get(args[1]) %>%
group_by_(args[2]) %>%
mutate(cnt=n())