首页 > 解决方案 > 将 eval(parse()) 与多元素向量一起使用

问题描述

我正在尝试从字符向量中 eval(parse()) 变量名,但 eval() 仅返回最后一个变量的内容: 我的代码:

c <- c(1,1)
a <- c(1,0)
t <- c(0,1)
g <- c(0,0)

sequence <- c("a", "t", "g", "t", "g", "t", "a", "c")
eval(parse(text=sequence))

它应该返回:

[1] 1 0 0 1 0 0 0 1 0 0 0 1 1 0 1 1

但它只是返回对应向量的最后一个元素:“c”

[1] 1 1

标签: rparsingexpressioneval

解决方案


我们可以使用来获取 a 中的mget所有对象值list,然后创建一个unlistlistvector

unlist(mget(sequence), use.names = FALSE)
#[1] 1 0 0 1 0 0 0 1 0 0 0 1 1 0 1 1

使用eval(parse时,它需要length1。我们可以遍历sequence并执行eval(不推荐)

c(sapply(sequence, function(x) eval(parse(text = x))))
#[1] 1 0 0 1 0 0 0 1 0 0 0 1 1 0 1 1

推荐阅读