将整个数据框合并/折叠成 R 中的单个列

Merge/ Collapse entire data frame into a single column in R

输入数据框可以有不同的列数。 输出数据框应该只有一列,它是输入数据框中所有可用列的串联。

示例:输入

╔══════╦══════╗
║ a    ║ b    ║
╠══════╬══════╣
║blue  ║ 5636 ║
║red   ║  148 ║
║yellow║  101 ║
║green ║  959 ║
╚══════╩══════╝

期望的输出

╔═══════════╗
║    a-b    ║
╠═══════════╣
║blue-5636  ║
║red-148    ║
║yellow-101 ║
║green-959  ║
╚═══════════╝

此示例有 2 列,输入数据框可以有任意数量的列,因此解决方案不应要求列名。

我试过使用转换,但这需要指定列。

outputDF=transform(inputDF,xyz=paste0(inputDF[,1],'-',inputDF[,2]))

有没有一种方法可以将所有输入列折叠成一个由“-”分隔的列

我们可以使用do.call

 v1 <- do.call(paste, c(inputDF, list(sep='-')))
 v2 <- paste(names(inputDF), collapse='-')
 setNames(data.frame(v1),v2)
 #         a-b
 #1  blue-5636
 #2    red-148
 #3 yellow-101
 #4  green-959