簡體   English   中英

將列表取消列出到向量中,並將元素用作R中的列(如果可能的話,不帶循環)

[英]Unlist the list into vector and use elements as columns in R(if possible without loops)

我正在使用igraphego來獲取節點的鄰居。 我的輸入格式如下

V1  V2
1    9   7
2    9  10
3    9  84
4    7   8
5    7   9
6    7  79
7   10   9
8   10  11
9   10  84
10  10 110

然后我在此輸入上執行以下操作(這里rd是輸入的csv文件)

gs <- graph.data.frame(rd, directed = FALSE)
q<-ego(gs,2,(1:20))

q的輸出為列表as的形式(圖的前5個節點的輸出)

[[1]]
+ 10/20 vertices, named:
 [1] 9   7   10  84  8   79  11  110 83  85 

[[2]]
+ 9/20 vertices, named:
[1] 7   9   8   79  10  84  33  78  119

[[3]]
+ 11/20 vertices, named:
 [1] 10  9   84  11  110 7   83  85  12  111 112

[[4]]
+ 8/20 vertices, named:
[1] 84  9   10  83  85  7   11  110

[[5]]
+ 7/20 vertices, named:
[1] 8  7  33 9  79 32 34

在這里,第一個元素表示在其上執行操作的節點。 我想要的輸出是以如下方式獲取數據幀的:第一列中每個向量的第一個元素,第二列中每個向量的其余元素,例如給定輸出中的第一和第二個向量

V1  V2
1    9  7
2    9  10
3    9  84
4    9   8
5    9  79
6    9  11
7    9  110
8    9  83
9    9  85
10   7  8
11   7  9
12   7  79
13   7  10
14   7  84
15   7  33
16   7  78
17   7  119

如果您提供一個可復制的示例來復制您的問題,則將很有幫助。 例如,簡單到

myList <- list(1:10, 2:11)

應該足夠了。

此時,您可以對lapplydo.call使用一些隱藏的循環來構造所需的輸出。

do.call(rbind.data.frame, lapply(myList, function(x) cbind(x[1], x[-1])))
   V1 V2
1   1  2
2   1  3
3   1  4
4   1  5
5   1  6
6   1  7
7   1  8
8   1  9
9   1 10
10  2  3
11  2  4
12  2  5
13  2  6
14  2  7
15  2  8
16  2  9
17  2 10
18  2 11

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM