我使用ego
中的igraph
来获取节点的邻居。我的输入格式如下
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的输出是列表形式(图的前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
答案 0 :(得分:1)
如果您提供可重现的示例来复制您的问题,将会很有帮助。例如,像
这样简单的东西myList <- list(1:10, 2:11)
应该足够了。
此时,您可以使用lapply
和do.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