取消列表中的两列,同时保留列

时间:2016-05-04 10:36:12

标签: r

我正在尝试取消列表以获取排序(这是点)数组,但我无法找到任何提示。

所以,让我们说这是我的清单:

V1<-c("Node 1","Node 3","Node 3","Node 3","Node 4","Node 4","Node 4","Node 4","Node 5","Node 7","Node 8","Node 8");
V2<-c("Node 2","Node 5","Node 6","Node 2","Node 1","Node 5","Node 7","Node 2","Node 2","Node 8","Node 6","Node 3");
try<-data.frame(V1,V2);
colnames(try)<-c("V1","V2");

现在,如果我试图取消它,我就会得到:

array(unlist(try))
 [1] "Node 1" "Node 3" "Node 3" "Node 3" "Node 4" "Node 4" "Node 4" "Node 4"
 [9] "Node 5" "Node 7" "Node 8" "Node 8" "Node 2" "Node 5" "Node 6" "Node 2"
[17] "Node 1" "Node 5" "Node 7" "Node 2" "Node 2" "Node 8" "Node 6" "Node 3"

但这不是我想要的。我需要一个保留两列耦合的数组。让我们说我需要将V1的第一个值与V2的第一个值,然后是V1的第二个值和V2的第二个值......并最终将它们放在一个数组中:

"Node 1","Node 2","Node 3","Node 5","Node 3","Node 6","Node 3","Node 2","Node 4","Node 1","Node 4","Node 5","Node 4","Node 7","Node 4","Node 2","Node 5","Node 2","Node 7","Node 8","Node 8","Node 6","Node 8","Node 3"

有没有使用for循环的解决方案?或者这是唯一的方法吗?

2 个答案:

答案 0 :(得分:5)

更短:

c(t(try))
[1] "Node 1" "Node 2" "Node 3" "Node 5" "Node 3" "Node 6" "Node 3" "Node 2" "Node 4" "Node 1" "Node 4" "Node 5"
[13] "Node 4" "Node 7" "Node 4" "Node 2" "Node 5" "Node 2" "Node 7" "Node 8" "Node 8" "Node 6" "Node 8" "Node 3"

答案 1 :(得分:2)

快速解决方案(apply取代for loop,所以有点可疑......):

unlist(apply(try, 1, list), use.names = FALSE)