簡體   English   中英

在 R 中動態加載來自 package 的數據

[英]Load data from package dynamically in R

我希望能夠以使用字符串插值的形式編寫以下內容。

r[[glue("fic_{data}")]] <- switch(
        data,
        "data" = fic::data,
        "targets" = fic::targets
)

我嘗試過類似的東西

r[[glue("fic_{data}")]] <- eval(glue("fic::{data}"))
r[[glue("fic_{data}")]] <- eval(sym(glue("fic::{data}")))
r[[glue("fic_{data}")]] <- eval(glue("fic::{!!data}"))

sym!!的許多組合和位置中 .

有可能嗎?如果可以,怎么辦?

使用eval ,我們可能還需要parse

> eval(glue("collapse::wlddev"))
collapse::wlddev

只返回glue object

> str(eval(parse(text = glue("collapse::wlddev"))))
'data.frame':   13176 obs. of  13 variables:
 $ country: chr  "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ...
  ..- attr(*, "label")= chr "Country Name"
 $ iso3c  : Factor w/ 216 levels "ABW","AFG","AGO",..: 2 2 2 2 2 2 2 2 2 2 ...
  ..- attr(*, "label")= chr "Country Code"
 $ date   : Date, format: "1961-01-01" "1962-01-01" "1963-01-01" "1964-01-01" ...
 $ year   : int  1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 ...
...

或者使用parse_exprrlang

eval(rlang::parse_expr(glue("collapse::wlddev")))

另一種選擇是傳遞data中的字符串以加載數據

data(list = "wlddev", package = "collapse")
head(wlddev)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM