我有兴趣了解如何通过找到排除空值的每种可能组合将RStudio中的多个列转换为两列。以下是示例输入:
Mike Bill Pat Ty
Bob Bret Mike null
Dyl Ty null null
下面是示例输出:
Mike Bill
Mike Pat
Mike Ty
Bill Pat
Bill Ty
Pat Ty
Bob Bret
Bob Mike
Bret Mike
Dyl Ty
任何帮助解决这个问题将是非常感激的。谢谢!
combn()
函数以所有可能的方式组合元素,同时保持顺序。t()
函数对结果进行转置。
你可以在最后用rbind()
把这些都放在一起。
t(combn(c('Mike', 'Bill', 'Pat', 'Ty'), 2))
[,1] [,2]
[1,] "Mike" "Bill"
[2,] "Mike" "Pat"
[3,] "Mike" "Ty"
[4,] "Bill" "Pat"
[5,] "Bill" "Ty"
[6,] "Pat" "Ty"
t(combn(c('Bob', 'Bret', 'Mike', NULL), 2))
[,1] [,2]
[1,] "Bob" "Bret"
[2,] "Bob" "Mike"
[3,] "Bret" "Mike"
t(combn(c('Dyl', 'Ty', NULL, NULL), 2))
[,1] [,2]
[1,] "Dyl" "Ty"