2

我的问题如下。我正在使用 R/igraph 处理大数据图。

我需要将clusters()$membership(即向量)的输出转换为对值进行分组的列表。

示例:我有向量 (3,3,3,1,1,4,4) 我需要一个具有以下结构的列表

l<-list()
l[["3"]]<-c(1,2,3)
l[["4"]]<-c(6,7)
l[["1"]]<-c(4,5)

maximal.cliques()也就是说,函数的输出具有的结构

我尝试在级别列表上使用 lapply,然后使用它来查找某个值的索引。然而这表现真的很差。我正在处理可能有 60K 不同级别的 180K 元素的数据向量。

4

2 回答 2

5

看看拆分():

> x <- c(3,3,3,1,1,4,4)
> y <- 1:7
> split(y, x)
$`1`
[1] 4 5

$`3`
[1] 1 2 3

$`4`
[1] 6 7


> z <- data.frame(x,y)
> split(z, z$x)
$`1`
  x y
4 1 4
5 1 5

$`3`
  x y
1 3 1
2 3 2
3 3 3

$`4`
  x y
6 4 6
7 4 7

>
于 2011-10-10T11:09:02.917 回答
1

您可以使用lapply

> test.vec <- c(3,3,3,1,1,4,4)
> test.u <- unique(test.vec)
> test.l <- lapply( test.u, function(x, test.vec) which(test.vec==x), test.vec=test.vec )
> names(test.l) <- test.u
> test.l
$`3`
[1] 1 2 3

$`1`
[1] 4 5

$`4`
[1] 6 7
于 2011-10-10T11:11:29.460 回答