由于我刚刚开始学习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)
如果有人可以帮助我使用这个管道操作员,我将不胜感激。
非常感谢您的支持!
此致,
查尔斯
我建议:
c(692, 5, 0, 629, 44, 9) |>
matrix(ncol = 3) |>
as.data.frame() |>
setNames(c("Improved", "Hospitalized", "Death"))
Run Code Online (Sandbox Code Playgroud)
|>),因此我不必加载magrittr(或dplyr或tidyverse)。(原生管道不太一样,%>%但它们的工作原理非常相似。)setNames()允许您使用“常规”函数(而不是奇怪的替换函数,即colnames<-)。如果您打算经常这样做,但确实不想将矩阵转换为数据框,您可以定义set_col_names <- function(x, nm) {
colnames(x) <- nm
return(x)
}
Run Code Online (Sandbox Code Playgroud)
(这会稍微降低效率但更容易阅读)
3 %>% `+`(5))matrix_3 <- matrix(c(692, 5, 0, 629, 44, 9),
ncol=3, byrow = TRUE,
dimnames = list(c("Treated", "Placebo"),
c("Improved", "Hospitalized", "Death")))
table_3 <- as.table(matrix_3)
Run Code Online (Sandbox Code Playgroud)
(最后一步我可能会使用管道。)
| 归档时间: |
|
| 查看次数: |
400 次 |
| 最近记录: |