如何在R中将stdin输入的图边数据转换为指定结构的列表
R实现按起始节点分组生成指定列表的步骤与代码
实现步骤
- 第一步:解析原始输入数据,拆分表头信息和边数据
你已经通过readLines读取了全部31行输入,第一行是表头,剩下30行是边的三元组数据,可以用read.table直接处理文本内容,避免手动拆分空格的麻烦 - 第二步:对边数据按起始节点分组
用split函数就可以直接按起始节点列对另外两列做分组,不需要手动循环处理 - 第三步:分别提取终止节点和成本生成两个列表
对分组后的结果做遍历,分别取出终止节点的字符向量、成本的数值向量,存入对应列表即可
完整实现代码
# 读取输入(你原有代码) input <- suppressWarnings(readLines(stdin(), n=31)) # 处理输入为结构化数据框 edge_df <- read.table(text = input, skip = 1, col.names = c("from", "to", "weight"), stringsAsFactors = FALSE) # 按起始节点分组 grouped_by_from <- split(edge_df, edge_df$from) # 生成alphabets列表:每个元素是对应起始节点的终止节点向量 alphabets <- lapply(grouped_by_from, function(df) df$to) # 生成cost列表:每个元素是对应起始节点的路径成本数值向量 cost <- lapply(grouped_by_from, function(df) df$weight) # 打印验证结果 print(alphabets) print(cost)
运行上述代码后输出的alphabets和cost与你给出的预期输出完全一致。
内容的提问来源于stack exchange,提问作者Chennai Cheetah
相关产品推荐
相关产品推荐

