gpt4 book ai didi

r - 从字符串列表中创建公式

转载 作者:行者123 更新时间:2023-12-01 23:15:23 25 4
gpt4 key购买 nike

我有以下代码将字符串解析为名为 dag_str2 的列表。它以嵌套列表的形式出现,我希望它只是一个常规列表。

dag_str <- "dag{D<-{G}; A<-{D}; A<-{G}; A<-{Q}}" 
dag_str2 <- gsub("dag|\\{|\\}|[[:space:]]","", dag_str) %>%
str_split(";")

dag_str2
[[1]]
[1] "D<-G" "A<-D" "A<-G" "A<-Q"

我希望输出是这样的公式列表输出:这样的列表

"D~G" "A~D+G+Q"

我如何在 R 中执行此操作?

最佳答案

您可以继续解析您的 dag_str2 以创建您的公式符号。

library(dplyr)
library(tidyr)

df <- tibble(str = unlist(dag_str2)) %>%
separate(str, c("lhs", "rhs"), sep = "<-") %>%
group_by(lhs) %>%
summarize(rhs = paste(rhs, collapse = "+"), .groups = "drop") %>%
mutate(f = paste(lhs, rhs, sep = "~"))

如果需要,您可以从此处轻松转换为实际公式。

lapply(df$f, as.formula)
# [[1]]
# A ~ D + G + Q
# <environment: 0x000001af8db7fa20>
#
# [[2]]
# D ~ G
# <environment: 0x000001af8db7fa20>

根据评论进行编辑

这是一种提取要为其构建拦截的术语的方法。

只有一个新行,bind_rows()。这会为 RHS 中但不在 LHS 中的术语添加行。

df <- tibble(str = unlist(dag_str2)) %>% 
separate(str, c("lhs", "rhs"), sep = "<-") %>%
bind_rows(tibble(lhs = setdiff(.$rhs, .$lhs),
rhs = "1")) %>%
group_by(lhs) %>%
summarize(rhs = paste(rhs, collapse = "+"), .groups = "drop") %>%
mutate(f = paste(lhs, rhs, sep = "~"))

关于r - 从字符串列表中创建公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69000310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com