r - 使用 2 个条件进行变异,第一个条件是变量名称,第二个条件是变量类型

标签 r dplyr multiple-conditions

假设我有下表:

df <- data.frame(
  a1 = 1:5,
  b1 = as.character(1:5),
  c  = 1:5 
)

> df
  a1 b1 c
1  1  1 1
2  2  2 2
3  3  3 3
4  4  4 4
5  5  5 5

我想修改名称以“1”结尾且为数字的列(即仅 a1 而不是 c)。我试图在 mutate(across(where...) 中询问这个双重条件,但没有成功。有关列名称的条件被排除。

以下脚本同时修改 a1c

df %>% 
  mutate(
    across(
      where(~ ends_with('1') && is.numeric(.)),
       ~ .x * 2
    ))

最佳答案

您不需要使用 where() 来进行名称测试函数,例如 ends_with()。您可以使用


df %>% 
  mutate(
    across(
      ends_with('1') & where(is.numeric),
      ~ .x * 2
  ))
#   a1 b1 c
# 1  1  1 1
# 2  2  2 2
# 3  3  3 3
# 4  4  4 4
# 5  5  5 5

还要小心 &&,它仅用于长度为 1 的输入,您需要使用 & 进行矢量化。

关于r - 使用 2 个条件进行变异,第一个条件是变量名称,第二个条件是变量类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77440137/

相关文章:

r - 基于配对数据的额外列(变异)

R:使用 dplyr 计算 B 跟随 A 的次数

r - 在 dplyr mutate 中,如何使用变量分配新的列名?

php - PHP 'if' 语句中的两个条件

python - Pandas : Assigning a value for each row in certain column based on multiple if condition

r - 使用 caret 包应用 k 折交叉验证模型

r - 如何在 “Rpres” rmarkdown演示文稿中添加引文和引用书目?

r - 如何使用 dplyr 和 bigrquery 从 Big Query 中的数据集中的多个表中进行选择?

java - 打乱 ArrayList 直到满足条件 (Java)

r - 使用 dplyr 收集虚拟变量