如何对列表中嵌套的edges dataframe进行子集化操作
两种方式修改列表内嵌套的edges数据框
针对你要删除from为ARTIFICIAL_START且to为Forged Wire, Medium (Sport)行的需求,这里提供两种可行的操作方式:
方式一:直接在列表内完成子集化
可以直接通过列表索引定位到edges数据框,原地完成筛选修改:
Base R 实现
# 保留不符合删除条件的所有行 perf$edges <- perf$edges[!(perf$edges$from == "ARTIFICIAL_START" & perf$edges$to == "Forged Wire, Medium (Sport)"), ]
dplyr 实现(需先加载dplyr包)
library(dplyr) perf$edges <- filter(perf$edges, !(from == "ARTIFICIAL_START" & to == "Forged Wire, Medium (Sport)"))
方式二:提取数据框修改后放回列表
如果觉得分步操作更清晰,可以先把edges提取出来,修改后再替换回原列表:
Base R 流程
# 1. 提取edges数据框 edges_df <- perf$edges # 2. 筛选删除目标行 edges_df <- edges_df[!(edges_df$from == "ARTIFICIAL_START" & edges_df$to == "Forged Wire, Medium (Sport)"), ] # 3. 将修改后的数据框放回原列表 perf$edges <- edges_df
dplyr 流程
library(dplyr) # 1. 提取edges数据框 edges_df <- perf$edges # 2. 筛选删除目标行 edges_df <- filter(edges_df, !(from == "ARTIFICIAL_START" & to == "Forged Wire, Medium (Sport)")) # 3. 将修改后的数据框放回原列表 perf$edges <- edges_df
两种方式最终都会得到修改后的perf列表,你可以根据自己的代码习惯选择合适的方法。
内容的提问来源于stack exchange,提问作者firmo23
相关产品推荐
相关产品推荐

