输入数据框可以有不同数量的列。 输出数据帧应该只有一列,它是输入数据帧中所有可用列的串联。
示例:输入
╔══════╦══════╗
║ 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]))
有没有办法可以将所有输入列折叠到由' - '
分隔的单个列中答案 0 :(得分:3)
我们可以使用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