使用R命令行参数 - 数据框列

时间:2015-11-19 11:33:40

标签: r

我正在努力使用一些我在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的新手,我无法弄明白,但看起来这是一个微不足道的问题。

1 个答案:

答案 0 :(得分:0)

试试这个例子:

#dummy arg inputs
args <- c("mtcars","gear")

#notice the "_" - "group_by_"
get(args[1]) %>% 
  group_by_(args[2]) %>% 
  mutate(cnt=n())