r - 通过数据框解析以在 R 中创建字符串
问题描述
我在 R 中有一个像这样的数据框
我希望能够创建一个函数来提示用户更改给定“v”和“w”输入的“e”值,并输出一个依赖项字符串。
v w e
1 d f --
2 d a ->
3 f a ->
4 q a ->
该函数如下所示:
convert_dag <- function(df,v,w,e) {
}
并且预期的输出看起来像这样:它将首先列出所有唯一值,然后是依赖项。
> str <- convert_dag(df, 'q','f','<--')
> str
dag {
a
d
f
q
d <- f
d -> a
f -> a
q -> a
}
这样我就可以将其用作“dagitty()”函数的输入来创建 DAG 图。
g <- dagitty(str)
我的解决方案:
convert_dag <- function(df,v,w,e) {
z <- 'dag{'
for (row in 1:nrow(df)) {
if (df[row,'v'] == v && df[row,'w'] == w) {
z <- paste(z,paste(df[row,'v'], e, df[row,'w']), collapse = '')
} else {
z <- paste(z,paste(df[row,'v'], df[row,'e'], df[row,'w']), collapse = '')
}
}
z <- paste(z,'}')
z
}
但是,我不喜欢这种解决方案,是否有更有效的清洁方式来编写此代码?
解决方案
这是重点吗?
library(tidyverse)
df = tribble(
~v, ~w, ~e,
"d", "f", "--",
"d", "a", "->",
"f", "a", "->",
"q", "a", "->")
convert_dag = function(df,V,W,E) {
df %>% mutate(
txt = ifelse(v==V & w==W, paste(V,E,W), paste(v,e,w))
) %>% pull(txt) %>% paste(.,collapse = " ") %>% paste('dag{',.,'}')
}
convert_dag(df, "d", "f", "->")
#[1] "dag{ d -> f d -> a f -> a q -> a }"
您是否重复了您的问题?
推荐阅读
- django - 检索 get 参数时编码错误
- sql-server - 在个人计算机上使用 SQL Server Express 托管网站
- reactjs - 类型错误无法读取未定义 reactjs 的属性“推送”
- codenameone - 代号一个应用程序无法使用 https 请求与服务器连接
- azure - 使用 ARM 模板为 Azure VM 激活 MSI
- python - Keras - 检索层连接到的层
- asp.net - 如何使用asp gridview链接按钮从数据库下载pdf文件
- java - 聊天片段不更新 recyclerview
- python - 从 Box 下载文件
- vue.js - 为 Vue 组件元素动态添加任意属性?