【发布时间】:2023-01-08 00:46:09
【问题描述】:
我仍在努力弄清楚rowwise 在 R/dplyr 中是如何工作的。
例如我有这段代码:
library(dplyr)
df = data.frame(
group = c("a", "a", "a", "b", "b", "c"),
var1 = 1:6,
var2 = 7:12
)
df %>%
mutate(
concatNotRW = paste0(var1, "-", group), # work on rows
meanNotRW = mean(c(var1, var2)), # works not on rows
charsNotRW = strsplit(concatNotRW, "-") # works on rows
) %>%
rowwise() %>%
mutate(
concatRW = paste0(var1, "-", group), # all work on rows
meanRW = mean(c(var1, var2)),
charsRW = strsplit(concatRW, "-")
) -> res
res 数据框如下所示:
group var1 var2 concatNotRW meanNotRW charsNotRW concatRW meanRW chars
<chr> <int> <int> <chr> <dbl> <list> <chr> <dbl> <list>
1 a 1 7 1-a 6.5 <chr [2]> 1-a 4 <chr [2]>
2 a 2 8 2-a 6.5 <chr [2]> 2-a 5 <chr [2]>
3 a 3 9 3-a 6.5 <chr [2]> 3-a 6 <chr [2]>
4 b 4 10 4-b 6.5 <chr [2]> 4-b 7 <chr [2]>
5 b 5 11 5-b 6.5 <chr [2]> 5-b 8 <chr [2]>
6 c 6 12 6-c 6.5 <chr [2]> 6-c 9 <chr [2]>
我不明白的是为什么paste0 可以获取一行中的每个单元格并将它们粘贴在一起(本质上执行逐行操作),但 mean 不能那样做。我错过了什么,是否有任何关于在不调用 rowwise() 的情况下已经按行工作的规则?我没有在 rowwise()-vignette here https://dplyr.tidyverse.org/articles/rowwise.html 中找到这么多信息
【问题讨论】: