如何将含命名向量的列表转换为网络分析用tibble
转换edge_list为网络分析用的边数据框
方法一:使用tidyverse工具链快速转换过滤
直接用purrr::map_dfr将列表中的每个命名向量转为行并绑定,再过滤掉含NA的行:
library(tidyverse) # 转换列表为tibble并过滤无效边 edge_df <- edge_list %>% map_dfr(as_tibble_row) %>% filter(!is.na(from), !is.na(to))
方法二:基础R实现
通过do.call(rbind, ...)将列表转为矩阵,再转成tibble后过滤:
# 基础R方式转换 edge_matrix <- do.call(rbind, edge_list) edge_df <- as_tibble(edge_matrix) %>% filter(!is.na(from), !is.na(to))
优化边生成过程(可选)
你可以直接在生成边的阶段只保留有效项,避免后续处理NA,提升效率:
# 直接收集有效边,无需生成NA项 edge_list <- list() for (k in 1:(nrow(x)-1)) { if (x$propertyID[k] != x$propertyID[k+1]) { edge_list[[length(edge_list) + 1]] <- c(from = x$propertyID[k], to = x$propertyID[k+1]) } } # 直接转换为目标tibble edge_df <- map_dfr(edge_list, as_tibble_row)
内容的提问来源于stack exchange,提问作者pandora
相关产品推荐
相关产品推荐

