R语言如何改造函数支持传入列表参数将dataframe转为dag格式字符串
批量替换DAG边的R函数实现
完整代码
library(tidyverse) convert_dag <- function(df, V, W, E) { # 校验输入向量长度一致 stopifnot(length(V) == length(W), length(W) == length(E)) # 构造替换映射表 replace_map <- tibble(v = V, w = W, new_e = E) df %>% # 关联替换规则,匹配到的行用新边符号,未匹配用原始边符号 left_join(replace_map, by = c("v", "w")) %>% mutate( use_e = coalesce(new_e, e), txt = paste(v, use_e, w) ) %>% pull(txt) %>% paste(collapse = " ") %>% paste0("dag{ ", ., " }") }
测试验证
测试数据
df <- tribble( ~v, ~w, ~e, "d", "f", "--", "d", "a", "->", "f", "a", "->", "q", "a", "->")
调用示例
convert_dag(df, c('d','d'), c('f','a'), c('->','<-'))
输出结果
[1] "dag{ d -> f d <- a f -> a q -> a }"
核心改动说明
- 新增输入校验逻辑,保证传入的
V/W/E三个向量长度一致,避免匹配异常 - 构造替换映射表存储所有要修改的边规则,通过左连接关联原始数据
- 用
coalesce函数处理替换逻辑:匹配到规则的行使用新边符号,未匹配的行保留原始边符号
内容的提问来源于stack exchange,提问作者Eisen
相关产品推荐
相关产品推荐

