У меня есть фрейм данных df
structure(list(X = 1:12, id = structure(c(2L, 7L, 5L, 4L, 3L,
1L, 6L, 8L, 9L, 10L, 11L, 12L), .Label = c("B12", "B7", "C2",
"C9", "D3", "E2", "E6", "R4", "T2", "T3", "T7", "U9"), class = "factor"),
age = c(42L, 45L, 83L, 59L, 49L, 46L, 52L, 23L, 24L, 25L,
26L, 27L)), class = "data.frame", row.names = c(NA, -12L))
Я разделил людей в приведенном выше фрейме данных на список из 3 матриц под названием list_mat
list(Blue_Banana = structure(c("B7", "E6", "D3", "C9"), .Dim = c(2L,
2L), .Dimnames = list(NULL, c("target", "partner"))), Gold_Apple = structure(c("C2",
"B12", "E2", "R4"), .Dim = c(2L, 2L), .Dimnames = list(NULL,
c("target", "partner"))), Blue_Orange = structure(c("T2",
"T3", "T7", "U9"), .Dim = c(2L, 2L), .Dimnames = list(NULL, c("target",
"partner"))))
Я бы хотелдля группировки матриц на основе ключевых слов в именах их матричных объектов, которые можно найти с помощью
names(list_mat)
Затем я использую функцию из пакета igraph
для вычисления степени
list_graph= lapply(list_mat, graph_from_edgelist, directed=TRUE)
cent_list= lapply(list_graph, centr_degree, mode="in")
Чтобы получить действительные оценки в градусах, я буду использовать первый матричный объект внутри list_mat
в качестве примера
cent_list[[1]]$res
Чтобы получить идентификатор того, к кому относятся оценки в степени, я сновапросто используйте первую матрицу внутри list_mat
в качестве примера
V(list_graph[[1]])$name
Я хочу получить оценки в градусах всех значений в матрицах внутри list_mat
, которые содержат строку "Blue" в своем имени, чтобыбыть сопоставлены с их идентификатором в исходном фрейме данных df
, и это создаст столбец с именем «Синий», который содержит оценки в градусах идентификаторов в этих матрицах.Затем я хочу сделать то же самое со всеми матрицами, которые имеют «Gold» в названии объектов матрицы внутри list_mat
(есть только одна матрица с «Gold» в названии). Окончательный результат будет выглядеть примерно так, как показано на рисунке.внизу, но цифры могут быть разными.
enter image description here">