【发布时间】:2019-03-19 10:23:47
【问题描述】:
我在 tibble/data.frame 上使用来自 dplyr 的distinct() 有一个问题。从文档中可以清楚地看出,您可以通过明确命名列名来使用它。我有一个超过 100 列的数据框,并且想在一个子集上使用该功能。我的直觉说我将列名放在一个向量中,并将其用作不同的参数。但是 distinct 只使用第一个向量元素
虹膜示例:
data(iris)
library(dplyr)
exclude.columns <- c('Species', 'Sepal.Width')
distinct_(iris, exclude.columns)
这不同于
exclude.columns <- c('Sepal.Width', 'Species')
distinct_(iris, exclude.columns)
我认为此操作没有区别。另一种选择是对 data.frame 进行子集化,然后使用 distinct 并再次与排除的列连接。但我的问题是,是否有另一种选择只使用一个功能?
【问题讨论】:
-
您可以只列出
distinct中的列并使用.keep_all = TRUE参数。或者,您可以从dplyr v0.8开始使用distinct_at。 -
@arg0naut:问题不在于列表,而是 distinct() 仅对第一个向量元素进行操作,而不是像预期的那样对两者都进行操作。 distinct_at() 不在文档中,我会试一试。
-
也试试
distinct(iris, !!! syms(exclude.columns)) -
谢谢,这应该可行!
-
@arg0naut91,您可以考虑发布您的
distinct(iris, !!! syms(exclude.columns))评论作为答案吗?它非常有帮助,应该更明显。
标签: r dataframe dplyr distinct