R 基于向量索引而不是列名或索引筛选行
我有一个非常简单的数据帧df_测试示例,如下所示:R 基于向量索引而不是列名或索引筛选行,r,dplyr,R,Dplyr,我有一个非常简单的数据帧df_测试示例,如下所示: df_测试通过添加purr,您可以执行以下操作: map(.x = v, ~ df_test %>% filter(across(all_of(.x)) == 5)) [[1]] A 1 5 在其当前形式中,筛选操作将文本字符串“A”(即v[1]的内容)与数字5进行比较,数字5当然始终为false,因此无法返回任何有效行。相反,您需要将变量A(包含在df_test中)作为第一个参数传递给filter()。您可以使
df_测试通过添加purr
,您可以执行以下操作:
map(.x = v,
~ df_test %>%
filter(across(all_of(.x)) == 5))
[[1]]
A
1 5
在其当前形式中,筛选操作将文本字符串“A”(即v[1]
的内容)与数字5进行比较,数字5当然始终为false,因此无法返回任何有效行。相反,您需要将变量A(包含在df_test中)作为第一个参数传递给filter()
。您可以使用get()
这样做:
df_analysis <- df_test %>%
filter(get(v[1]) == 5)
df_分析%
过滤器(get(v[1])==5)
这里使用purr
的另一个解决方案实际上要好得多,但我想指出为什么您的代码没有按预期工作。我们可以使用base R
df_test[df_test[[v]] == 5, , drop = FALSE]
或者使用dplyr
,通过转换为sym
bol并计算(!!
)
或使用.data
df_test %>%
filter(.data[[v]] == 5)
df_test %>%
filter(.data[[v]] == 5)