【发布时间】:2021-03-29 18:38:40
【问题描述】:
我正在尝试创建一个igraph 对象,将字符串向量拆分为特殊字符(“&”)。
我使用 for 循环创建一个向量并将其转换为网络图。
该代码有效,但在非常长的向量(大型网络)上效率极低。
有没有办法通过管道和映射来改进流程? 提前致谢
require(graph)
data <- data.frame(nodes=c("A","A & B","C","B & C","B & D"))
V <- c()
for (i in 1:nrow(data)){
V_temp <- data[i,]
ifelse(grepl(" & ", data$nodes[i]),
N <- t(combn(unlist(strsplit(data$nodes[i], " & ")),2)),
N <- matrix(rep(data$nodes[i],2), nrow = 1, ncol = 2))
colnames(N) <- c("N1","N2")
V_temp <- cbind(N, V_temp, row.names = NULL)
V <- as.data.frame(rbind(V, V_temp, row.names = NULL))
}
vector <- rbind(as.vector(as.character(V$N1)),
as.vector(as.character(V$N2)))
plot(graph(vector, directed = FALSE))
【问题讨论】:
标签: r for-loop networking dplyr igraph