【发布时间】:2020-11-23 16:18:17
【问题描述】:
给定一个小标题:
library(tibble)
myTibble <- tibble(a = letters[1:3], b = c(T, F, T), c = 1:3)
我可以使用transmute 粘贴列,用'.'分隔:
> library(dplyr)
> transmute(myTibble, concat = paste(a, b, c, sep = "."))
# A tibble: 3 x 1
concat
<chr>
1 a.TRUE.1
2 b.FALSE.2
3 c.TRUE.3
如果我想在接收 tibble 的函数中使用上述 transmute 语句,我不会提前知道 tibble 的名称或列数。什么 dplyr 语法可以让我 paste 以“。”分隔的小标题中的所有列?
请注意,我可以这样做:
> apply(myTibble, 1, paste, collapse = ".")
[1] "a.TRUE.1" "b.FALSE.2" "c.TRUE.3"
但我想更好地理解 dplyr。所以,是的,这是我试图解决的一个具体问题,但我也很困惑为什么我不能用 dplyr 解决它,这意味着我还不明白关于 dplyr 列选择的一些关键,并且我想学习,这就是为什么我要专门询问 dplyr 解决方案。
【问题讨论】:
-
tidyr::unite(myTibble, concat, everything()) -
如果你需要点,你可以启用
sep这样tidyr::unite(myTibble, concat, everything(),sep='.') -
是
base,不是dplyr,但你也可以使用do.call(paste, myTibble, sep = ".") -
do.call解决方案是do.call(paste, c(myTibble, list(sep = ".")))。同样,我在这里的部分问题是尝试了解更多关于使用 dplyr 选择列的信息。如果有人不仅可以告诉我如何选择所有列,还可以描述为什么任何解决方案都有效,我将不胜感激!