【问题标题】:Paste dataframe columns into a pre-formatted string将数据框列粘贴到预先格式化的字符串中
【发布时间】:2019-07-31 10:58:17
【问题描述】:

我有一个如下所示的数据框:

df <- tibble::tribble(
                                                  ~topic,   ~substance,
                                  "Pregnancy, High-Risk",  "Krill oil",
        "Pregnancy Complications/ prevention & control*", "Fish oils*",
                "Premature Birth/ prevention & control*",    "Omega 3")

我想将列中的每个元素组合成一个预先格式化的字符串,表示要在 PubMed(科学文献数据库)中使用的查询。

查询包含 OR 和 AND 以及括号的组合,格式如下:

query <- "((Topic 1) OR (Topic 2) OR (Topic 3)) AND ((Substance 1) OR (Substance 2) OR (Substance 3))"

又名:

(
(Pregnancy, High-Risk)
OR
(Pregnancy Complications/ prevention & control*)
OR
(Premature Birth/ prevention & control*)
)
AND
(
(Krill oil)
OR
(Fish oils*)
OR
(Omega 3)
)

我怎样才能以一种面向整洁的方式实现这一点?

【问题讨论】:

    标签: r string tidyverse


    【解决方案1】:

    我认为您可以使用paste 在基础 R 本身中实现这一点。

    paste(sapply(df, function(x) 
          paste("(", paste("(", x, ")", collapse = " OR"), ")")), collapse = " AND ")
    
    #"( ( Pregnancy, High-Risk ) OR( Pregnancy Complications/ prevention & control* ) 
    #        OR( Premature Birth/ prevention & control* ) ) AND
    #     ( ( Krill oil ) OR( Fish oils* ) OR( Omega 3 ) )"
    

    如果您有多个需要加入的列,则使用 sapply。如果你真的需要它,你绝对可以使用stringr::str_c 翻译它。

    【讨论】:

      猜你喜欢
      • 2021-11-26
      • 2018-05-01
      • 1970-01-01
      • 2021-09-29
      • 2021-05-14
      • 2018-12-07
      • 2020-01-07
      • 2022-07-12
      • 2015-07-29
      相关资源
      最近更新 更多