我想知道为什么,在中dplyr或magrittr包装,更具体的链接功能%>%有一定的麻烦与基础运营商+,-,*,和/
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问题中找不到答案.
我尝试使用数据的第一行重命名列名。
将 %>% 与 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,我想将下面的代码重新编写成管道运算符的方式。但是,设置 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)
如果有人可以帮助我使用这个管道操作员,我将不胜感激。
非常感谢您的支持!
此致,
查尔斯