我有以下代码,将返回DAG的图形:
library(dagitty)
library(ggplot2)
dag <- dagitty( "dag {
Y <- X <- Z1 <- V -> Z2 -> Y
Z1 <- W1 <-> W2 -> Z2
X <- W1 -> Y
X <- W2 -> Y
X [exposure]
Y [outcome]
}")
tidy_dag <- tidy_dagitty(dag, layout = "fr")
return_test <- function(tidy_df) {
tidy_df %>%
ggplot(aes(x = x, y = y, xend = xend, yend = yend)) +
geom_dag_node() +
geom_dag_text() +
geom_dag_edges() +
theme_dag()
}
return_test(tidy_dag)
我想返回数据框和图形虽然。我该怎么做呢?本质上,我想返回图像和tidy_dag
。或者只是返回一个对象,我可以使用$从中获取一个特定的元素。
1) attribute这将返回绘图,但将日期作为属性。
return_test2 <- function(tidy_df) {
p <- tidy_df %>%
ggplot(aes(x = x, y = y, xend = xend, yend = yend)) +
geom_dag_node() +
geom_dag_text() +
geom_dag_edges() +
theme_dag()
structure(p, dag = tidy_df$dag)
}
out <- return_test2(tidy_dag)
plot(out)
attr(out, "dag") # dag
它的一种变体是使用this作为结构语句返回带有plot的日期作为属性。
structure(tidy_df$dag, plot = p)
<<p>2)列表/strong>或者返回一个包含plot和dag组件的列表。这是return_test3 <- function(tidy_df) {
p <- tidy_df %>%
ggplot(aes(x = x, y = y, xend = xend, yend = yend)) +
geom_dag_node() +
geom_dag_text() +
geom_dag_edges() +
theme_dag()
list(plot = p, dag = tidy_df$dag)
}
out <- return_test3(tidy_dag)
plot(out$plot)
out$dag