有没有一种健壮的方法,可以使用包含数据框列名字符串列表的变量,并传递给各种 dplyr
操作?
我刚开始接触 dplyr
。
当我尝试在数据框的子集列上使用操作时,如果我在逗号分隔的列表中显式命名列,dplyr
就会表现得很棒。
这段代码按预期工作
library(dplyr)
# Create dataframe
df <- data.frame(
a = c(1, 1, 1, 2, 2, 2)
, b = c(1, 2, 3, 1, 2, 3)
, c = c(1, 2, 1, 2, 1, 2)
)
# Identify rows where a * c is duplicated
df %>%
select(a, c) %>%
count(a, c) %>%
filter(n > 1)
然而,有时我已经有一个列名列表,我想将其传递到 dplyr
步骤中,而不是显式地命名每个列。然而,我还没有找到一种易于使用或方便的方法来处理这个问题,因为它需要足够健壮以处理多个 dplyr
操作:
以下代码无法正常工作
# Attempting to do the same with a named list of relevant columns
relevantCols <- c("a", "c")
# Fails
df %>%
select(relevantCols)
# Trying to make new variable based on my relevantCols variable
colsForDplyr <- sapply(relevantCols, eval)
df %>%
# First step succeeds
select(colsForDplyr) %>%
# Fails at count step
count(colsForDplyr)
在上面的简单示例中,每次进行`dplyr`操作重新输入“a,c”不是什么大问题。但是,如果我的列列表更长,我宁愿通过传递变量到`dplyr`操作中,而不是一遍又一遍地重新输入列名列表。
有没有什么技巧可以实现这个目标?
我将接受一种解决方案,该解决方案显示如何从列名称列表创建一个变量,该变量可以在各种`dplyr`操作中使用,以替代每次重新输入每个列名称。