将列表取消列表为向量并将元素用作 R 中的列(如果可能,没有循环)
Unlist the list into vector and use elements as columns in R(if possible without loops)
我正在使用 igraph
中的 ego
来获取节点的邻居。我的输入格式如下
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 个顶点,命名为:
[1] 9 7 10 84 8 79 11 110 83 85
[[2]]
+ 9/20 个顶点,命名为:
[1] 7 9 8 79 10 84 33 78 119
[[3]]
+ 11/20 个顶点,命名为:
[1] 10 9 84 11 110 7 83 85 12 111 112
[[4]]
+ 8/20 个顶点,命名为:
[1] 84 9 10 83 85 7 11 110
[[5]]
+ 7/20 个顶点,命名为:
[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)
应该足够了。
此时,您可以使用一些带有 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
我正在使用 igraph
中的 ego
来获取节点的邻居。我的输入格式如下
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 个顶点,命名为: [1] 9 7 10 84 8 79 11 110 83 85 [[2]] + 9/20 个顶点,命名为: [1] 7 9 8 79 10 84 33 78 119 [[3]] + 11/20 个顶点,命名为: [1] 10 9 84 11 110 7 83 85 12 111 112 [[4]] + 8/20 个顶点,命名为: [1] 84 9 10 83 85 7 11 110 [[5]] + 7/20 个顶点,命名为: [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)
应该足够了。
此时,您可以使用一些带有 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