相关疑难解决方法(0)

dplyr中的链算术运算符,%>%pipe

我想知道为什么,在中dplyrmagrittr包装,更具体的链接功能%>%有一定的麻烦与基础运营商+,-,*,和/

Chaining获取前一个语句的输出并将其作为下一个语句的第一个参数提供:

1:10 %>% sum
# [55]
Run Code Online (Sandbox Code Playgroud)

那么为什么这不起作用

1:10 %>%  *2 %>% sum
1:10 %>% .*2 %>% sum
Run Code Online (Sandbox Code Playgroud)

我还发现以下语法适用于添加/减少,但不能乘法或除法.为什么这样?

1:10 %>% +(2) # works OK
1:10 %>% *(2) # nope...
Run Code Online (Sandbox Code Playgroud)

那么我应该写一个匿名函数甚至*2对我的data.frame 进行操作吗?

1:10 %>% (function(x) x*2) %>% sum
Run Code Online (Sandbox Code Playgroud)

谢谢,我在其他SO问题中找不到答案.

r piping dplyr magrittr

24
推荐指数
2
解决办法
5890
查看次数

如何使用 dplyr 链中数据的第一行更改列名称

我尝试使用数据的第一行重命名列名。

使用第一行数据作为 r 中的列名

将 %>% 与 colnames()<- 等替换函数一起使用

我反驳的问题是在不破坏列的情况下执行此过程,dplyr pipeline因为我想在重命名列后继续做一些其他的事情。

这篇文章中有关于rename函数 dplyr::rename 的评论,如果您只是(重新)命名许多列中的一些(它需要同时编写旧名称和新名称;请参阅@Richard Scriven 的答案)

但是,在我的真实数据中,列数不是固定的,因此我需要使用类似的方法来选择列 select(X9:max(ncol(.)))

df <- data.frame(replicate(10,sample(100,2,rep=TRUE)))


  X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
1 77 40 45 98 75 17  5 33 53  94
2 43 67 82 42 63 90 14 65  4  98

library(dplyr)
df1 <- df %>%
  select(X8,X9,X10)%>%
  ....
Run Code Online (Sandbox Code Playgroud)

选择和重命名列后的预期输出

  33 53  94
1 65  4  98
Run Code Online (Sandbox Code Playgroud)

r dplyr

8
推荐指数
1
解决办法
2223
查看次数

R 中使用的管道运算符

由于我刚刚开始学习R,我想将下面的代码重新编写成管道运算符的方式。但是,设置 rowname 和 colname 阻止了我。如果有人能帮助我,我将不胜感激,非常感谢!

原代码详细如下,

data_3 <- c(692, 5, 0, 629, 44, 9)
table_3 <- matrix(data_3, ncol=3, byrow = TRUE)
colnames(table_3) <- c("Improved", "Hospitalized", "Death")
rownames(table_3) <- c("Treated", "Placebo")
table_3 <- as.table(table_3)

chisq.test(table_3)
fisher.test(table_3)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用管道运算符时,我在设置 colname 和 rowname 时遇到了麻烦。

c(692, 5, 0, 629, 44, 9) %>% 
  matrix(ncol = 3) %>% 
  colnames <- c("Improved", "Hospitalized", "Death")
Run Code Online (Sandbox Code Playgroud)

如果有人可以帮助我使用这个管道操作员,我将不胜感激。

非常感谢您的支持!

此致,

查尔斯

r

2
推荐指数
1
解决办法
400
查看次数

标签 统计

r ×3

dplyr ×2

magrittr ×1

piping ×1