我有一个带有三个条目fruit
的向量Peach, Plum, Pear
。我想在fruit
中找到每个唯一的配对,并创建一个新的两列data.frame(例如下面的df.new)。我怎么能在r中为更大的data.set做这个? expand.grid
导致pear-plum
和plum-pear
不是唯一的配对,或者不是我要寻找的配对。有什么建议吗?
fruit <- c("Peach", "Plum", "Pear")
fruit1 <- c("Peach", "Peach", "Plum")
fruit2 <- c("Plum", "Pear", "Pear")
df.new <- data.frame(fruit1, fruit2)
#df.new
fruit1 fruit2
1 Peach Plum
2 Peach Pear
3 Plum Pear
# attempt
fruit.y <- fruit
df.expand <- expand.grid(fruit,fruit.y)
答案 0 :(得分:1)
使用您的初始策略,您仍然可以尝试展开网格:
fruit_df <- expand.grid(fruit,fruit)
然后按水果排序每一行并删除重复项:
fruit_df2 <- as.data.frame(unique(t(apply(fruit_df, 1, function(x) sort(x)))))
V1 V2
1 Peach Peach
2 Peach Plum
3 Peach Pear
4 Plum Plum
5 Pear Plum
6 Pear Pear
另一种策略是在fruit
中生成所有对的组合,尝试:
combn(fruit,2)
[,1] [,2] [,3]
[1,] "Peach" "Peach" "Plum"
[2,] "Plum" "Pear" "Pear"
或者将输出作为数据框,转换结果并重新制作:
as.data.frame(t(combn(fruit,2)))
请注意,使用combn
您将无法获得plum-plum
。