dplyr相当于DF [DF == X] < - Y.

CPa*_*Pak 3 r dplyr

我想知道是否有dplyr相同的

df <- data.frame(A=1:5,B=2:6,C=-1:3)
df[df==2] <- 10
Run Code Online (Sandbox Code Playgroud)

我在找

df %>% <??>
Run Code Online (Sandbox Code Playgroud)

也就是说,可以与其他dplyr动词链接的语句

G. *_*eck 7

1)替换试试这个.它只需要magrittr虽然dplyr导入了magrittr的相关部分,所以它也适用于dplyr:

df %>% replace(. == 2, 10)
Run Code Online (Sandbox Code Playgroud)

赠送:

   A  B  C
1  1 10 -1
2 10  3  0
3  3  4  1
4  4  5 10
5  5  6  3
Run Code Online (Sandbox Code Playgroud)

1a)覆盖请注意,上述内容是非破坏性的,因此如果您想要更新,df则需要将其分配回来:

df <- df %>% replace(. == 2, 10)
Run Code Online (Sandbox Code Playgroud)

要么

df %>% replace(. == 2, 10) -> df
Run Code Online (Sandbox Code Playgroud)

或使用magrittr %<>%运算符,它消除了df两次引用:

df %<>% replace(. == 2, 10)
Run Code Online (Sandbox Code Playgroud)

2)算术这也有效:

df %>% { 10 * (. == 2) + . * (. != 2) }
Run Code Online (Sandbox Code Playgroud)

  • 我非常明确地指出它只需要magrittr还要注意,%<>%解决方案只需要一个df参考,而基数为2.我认为问题的意图是如何在管道中进行. (2认同)