【发布时间】:2018-09-29 11:32:59
【问题描述】:
我刚刚观察到一个非常奇怪的行为,在比较 paste0 和 paste 与 mutate 应用时我无法解释:
mtcars %>% group_by(cyl) %>% ungroup() %>% mutate(`newcol ss` = paste0(as.character(wt), as.character(drat), collapse=";"))
上面这段代码使用paste0的输出如下:
mtcars %>% group_by(cyl) %>% ungroup() %>% mutate(`newcol ss` = paste(as.character(wt), as.character(drat)))
基本上 mutate 与 paste(逐行合并两列)效果很好,而 paste0 将所有列和行合并到一个单元格中。
【问题讨论】:
-
你为什么要为这么复杂的代码而烦恼?你不能用
mtcars$ss <- paste0(mtcars$wt, mtcars$drat, sep = " ") -
paste0 也指定了折叠,而 paste 没有...这就是为什么 rdocumentation.org/packages/base/versions/3.4.3/topics/paste
-
如果您使用
mtcars %>% group_by(cyl) %>% ungroup() %>% mutate(`newcol ss` = paste(as.character(wt), as.character(drat), collapse = ";")),它也会合并整个wt和drat列。所以paste和paste0之间没有区别。 -
@griffinevo 对复杂的代码感到抱歉,只是尝试重现我在项目中遇到的相同问题。但在这里我的问题是为什么所有列都在第一个场景中组合在一起。
-
崩溃论点 - 正如我的回答中所述 - 在您的两种情况下也不相等。这就是造成差异的原因。