如何正确评估文字字符向量

How to correctly evaluate a literal character vector

假设我在 R 中有以下对象:

QXX_my_vector <- "c(\"Element 1\", \"Element 2\", \"Element 3\", \"Element 4\")"

我想把它变成一个包含四个元素的真字符向量。

我可以通过 eval(parse(text = QXX_my_vector)) 做到这一点,它给出了:

# [1] "Element 1" "Element 2" "Element 3" "Element 4"

我的problem/question是:我想将文本元素动态传递给解析函数,即:

question_stem = "QXX"
eval(parse(text = paste0(question_stem, "_my_vector")))

然而,这给出了:

# [1] "c(\"Element 1\", \"Element 2\", \"Element 3\", \"Element 3\")"

我也尝试将 paste0 部分包装到 sym 函数中,但这给出了相同的结果。

有什么想法吗?

您必须使用 get 来获取具有给定名称的对象。

eval(parse(text = get(paste0(question_stem, "_my_vector"))))
#[1] "Element 1" "Element 2" "Element 3" "Element 4

我们可以使用str_extract

library(stringr)
 str_extract_all(get(paste0(question_stem, "_my_vector")), '(?<=")[^",)]+')[[1]]
[1] "Element 1" "Element 2" "Element 3" "Element 4"