我正在从一个外部文件读取数据,该文件看起来像这样:
param_file <- tribble(
~model, ~variable, ~value,
"BAX", "year", "2023",
"BAX", "version", "Saint_XL, Sinner_XY",
"BAX", "metric", "ATE, OFCE",
"LAX", "time", "2024",
"LAX", "model2", "Saint_XX, Sinner_XW",
"LAX", "method", "TEA, CEOF")
然后,我将分隔行并筛选出我想要运行的模型,在本例中为BAX:
param_file2 <- param_file %>%
separate_rows(value, sep = ",") %>%
mutate(value = trimws(value)) %>%
filter(model == "BAX")
看起来像这样:
model variable value
<chr> <chr> <chr>
1 BAX year 2023
2 BAX version Saint_XL
3 BAX version Sinner_XY
4 BAX metric ATE
5 BAX metric OFCE
我想知道是否有一种方法可以自动将变量及其值赋为字符向量:
因此,对于BAX模型,这些将是:
year <- param_file2 %>% filter(variable == "year") %>% pull(value)
version <- param_file2 %>% filter(variable == "version") %>% pull(value)
metric <- param_file2 %>% filter(variable == "metric") %>% pull(value)
LAX模型:
time <- param_file2 %>% filter(variable == "time") %>% pull(value)
model2 <- param_file2 %>% filter(variable == "model2") %>% pull(value)
method <- param_file2 %>% filter(variable == "method") %>% pull(value)
这些都给了我想要的答案,但每次我想定义一个新变量时,我都需要 for each 模型编写一行新代码.我想知道是否有一种方法可以将变量列中读取的内容赋给相应的值,而不必每次都写一行代码.
即 如果外部文件中出现2个新行,如下所示:
param_file <- tribble(
~model, ~variable, ~value,
"BAX", "pasta", "sauce",
"BAX", "jalapenos", "are, spicy")
然后,我希望2个新的变量定义如下(而不必显式地分配这些新的行).最好使用函数或purrr循环,例如:
> pasta
[1] "sauce"
> jalapenos
[1] "are" "spicy"