ОБНОВЛЕНИЕ: В приложенном примере у вас есть номера клик и члены клики в фрейме данных. Когда вы используете maximal.cliques(g)
, атрибут name
сохраняется, но атрибут PaperID
, кажется, удаляется. Вы должны выполнить следующее назначение для атрибута name
: V(g)$name <- NodeIds
и использовать attributes(x)$name
во втором sapply
. Внимательно изучите прилагаемый рабочий пример. Я изложил проблему.
library(igraph)
#>
#> Attache Paket: 'igraph'
#> The following objects are masked from 'package:stats':
#>
#> decompose, spectrum
#> The following object is masked from 'package:base':
#>
#> union
g <- sample_gnp(100, 0.3)
NodeIds <- paste("A", 1:100, sep =":")
V(g)$name <- NodeIds
V(g)$PaperID <- NodeIds
mylist <- maximal.cliques(g)
clique_number <- sapply(mylist, length)
clique_members <- sapply(mylist, function(x) paste("'", attributes(x)$name, "'", collapse = ",", sep = ""))
str(clique_members)
#> chr [1:2035] "'A:87','A:81','A:57'" "'A:87','A:81','A:77','A:69'" ...
# empty character vector!!!
cliques_members2 <- sapply(mylist, function(x) paste("'", attributes(x)$PaperID, "'", collapse = ",", sep = ""))
str(cliques_members2)
#> chr [1:2035] "''" "''" "''" "''" "''" "''" "''" "''" "''" "''" "''" "''" ...
cliques_df <- data.frame(cliqueNums = clique_number, cliqueMembs = clique_members)
head(cliques_df, n = 10)
#> cliqueNums cliqueMembs
#> 1 3 'A:87','A:81','A:57'
#> 2 4 'A:87','A:81','A:77','A:69'
#> 3 3 'A:87','A:79','A:69'
#> 4 4 'A:87','A:79','A:75','A:51'
#> 5 4 'A:87','A:79','A:75','A:65'
#> 6 3 'A:87','A:69','A:91'
#> 7 3 'A:87','A:65','A:28'
#> 8 3 'A:87','A:65','A:17'
#> 9 3 'A:87','A:57','A:28'
#> 10 3 'A:87','A:57','A:46'
# checks:
mylist[1:10]
#> [[1]]
#> + 3/100 vertices, named, from c3ed415:
#> [1] A:87 A:81 A:57
#>
#> [[2]]
#> + 4/100 vertices, named, from c3ed415:
#> [1] A:87 A:81 A:77 A:69
#>
#> [[3]]
#> + 3/100 vertices, named, from c3ed415:
#> [1] A:87 A:79 A:69
#>
#> [[4]]
#> + 4/100 vertices, named, from c3ed415:
#> [1] A:87 A:79 A:75 A:51
#>
#> [[5]]
#> + 4/100 vertices, named, from c3ed415:
#> [1] A:87 A:79 A:75 A:65
#>
#> [[6]]
#> + 3/100 vertices, named, from c3ed415:
#> [1] A:87 A:69 A:91
#>
#> [[7]]
#> + 3/100 vertices, named, from c3ed415:
#> [1] A:87 A:65 A:28
#>
#> [[8]]
#> + 3/100 vertices, named, from c3ed415:
#> [1] A:87 A:65 A:17
#>
#> [[9]]
#> + 3/100 vertices, named, from c3ed415:
#> [1] A:87 A:57 A:28
#>
#> [[10]]
#> + 3/100 vertices, named, from c3ed415:
#> [1] A:87 A:57 A:46
mylist[[22]]
#> + 5/100 vertices, named, from c3ed415:
#> [1] A:21 A:67 A:62 A:27 A:22
cliques_df[22, ]
#> cliqueNums cliqueMembs
#> 22 5 'A:21','A:67','A:62','A:27','A:22'
Создано 07 июля 2020 г. с помощью пакета reprex (v0.3.0)
person
Tim-TU
schedule
06.07.2020
dput()
, объект списка будет слишком длинным, чтобы скопировать сюда воспроизводимый код. Есть ли обходной путь? - person Grace   schedule 06.07.2020