You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何将DAG字符串解析合并为指定格式的公式列表

R实现方法

方法1:tidyverse实现(和你现有代码逻辑兼容)

library(tidyverse)

# 你的原有解析逻辑
dag_str <- "dag{D<-{G}; A<-{D}; A<-{G}; A<-{Q}}"
dag_str2 <- gsub("dag|\\{|\\}|[[:space:]]","", dag_str) %>%
  str_split(";") %>% 
  .[[1]] # 提取嵌套列表内的字符向量

# 转换为目标公式格式
result <- dag_str2 %>% 
  str_split("<-", simplify = TRUE) %>% 
  as.data.frame() %>% 
  group_by(V1) %>% # 按公式左侧变量分组
  summarise(formula_str = paste0(V1, "~", paste(V2, collapse = "+"))) %>% 
  pull(formula_str)

运行后打印result即可得到预期输出:

> result
[1] "D~G"     "A~D+G+Q"

如果需要对同一个左侧变量对应的重复右侧变量去重,把paste(V2, collapse = "+")修改为paste(unique(V2), collapse = "+")即可。

方法2:纯base R实现(无需加载第三方包)

dag_str <- "dag{D<-{G}; A<-{D}; A<-{G}; A<-{Q}}"
# 解析原始字符串
dag_str2 <- strsplit(gsub("dag|\\{|\\}|[[:space:]]","", dag_str), ";")[[1]]
# 拆分左右变量
parts <- strsplit(dag_str2, "<-")
lhs <- sapply(parts, `[`, 1)
rhs <- sapply(parts, `[`, 2)
# 按左侧变量分组拼接
result <- unname(tapply(rhs, lhs, function(x) {
  paste0(unique(lhs[lhs == names(x)[1]]), "~", paste(x, collapse = "+"))
}))

内容的提问来源于stack exchange,提问作者Eisen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:06:03