在循环中使用collect(),将“键”和“值”用作变量

时间:2019-08-27 14:56:35

标签: r tidyr

我喜欢循环使用gather(),其中gather() keyvalue的输入值是一个变量。这可能吗?

我还尝试了gather()的标准变量(在循环外部设置,没有索引),但是不起作用。

因此,我认为,按照_gather()_的定义,不可能将keyvalue分配给变量。

上找到的文档中:

“ ...请注意,这种界面中的符号不​​代表实际对象...”

我认为这就是答案。 但是我不确定。

gather(Fragenummern.FB[i], Fragenummern.FI[i], 
       key = keyVar[i], value = ValueVar[i])  
  

错误:必须提供符号或字符串作为参数

     

致电rlang::last_error()查看回溯

1 个答案:

答案 0 :(得分:0)

我认为您可以使用dplyr::gatherrlang命令来实现。在此示例中,您有df,要在dfgather的某些变量名称的向量,以及新收集的变量的名称的向量。

df <- data.frame(matrix(runif(260),ncol = 26))
names(df) <- letters

to_gather <- sample(letters,5)
new_names <- c('letter','value')

df %>% gather(key = !!new_names[1], value = !!new_names[2], enexpr(to_gather))

您可以遍历此循环,并根据要收集的变量的不同子集创建多个新数据框。

lapply(1:2, function(x){
  to_gather <- sample(letters,5)
  df %>% gather(key = !!new_names[1], value = !!new_names[2], enexpr(to_gather))
  })