如何将名称传递给dplyr :: distinct()

时间:2016-04-27 19:09:44

标签: r

我有一个包含五个数据框的列表,其中包含用户对调查的响应。

在每个数据框中,第二列是用户ID号。一些用户多次参加调查,我试图清除重复的回复并保留第一条记录。

命名约定是相当标准的,因此第一个数据框中的列被称为类似于 survey1_id ,第二个是 survey2_id 等,但例外情况是第三个数据框中的列称为 survey3a_id

基本上我试图做的就是:

for (i in seq(1,5)) {
  newdata <- distinct(survey_list[[i]], grep(names("^survey.*_id$", survey_list[[i]]), value = TRUE))
}

但这不起作用。 我原本以为这只是因为grep输出周围有引号,但我试图用noquote()剥离它们并且这不起作用。然后我意识到distinct()实际上没有评估第二个参数,它只是字面意思,所以我试图强制它使用eval()进行评估,但这不起作用。 (不确定我真的期待它。)

所以现在我有点卡住了。我不知道最好的解决方案是编写五行单独的代码,还是为了更通用的解决方案,在循环中逐项进行排序和比较?只是希望有一个更清洁的解决方案。我对这些东西不熟悉。

0 个答案:

没有答案