在R中,计算字符串向量内的表达式

时间:2014-07-26 20:25:54

标签: r evaluation arithmetic-expressions

我希望评估包含算术表达式的字符串向量 - “1 + 2”,“5 * 6”等。

我知道我可以将单个字符串解析为表达式,然后在eval(parse(text="1+2"))中对其进行评估。

但是,我更愿意在不使用for循环的情况下评估向量。

foo <- c("1+2","3+4","5*6","7/8") # I want to evaluate this and return c(3,7,30,0.875)
eval(parse(text=foo[1])) # correctly returns 3, so how do I vectorize the evaluation?
eval(sapply(foo, function(x) parse(text=x))) # wrong! evaluates only last element

2 个答案:

答案 0 :(得分:8)

只需应用整个功能。

sapply(foo, function(x) eval(parse(text=x)))

答案 1 :(得分:0)

只是为了表明您也可以使用for循环执行此操作:

result <- numeric(length(foo))
foo <- parse(text=foo)
for(i in seq_along(foo))
    result[i] <- eval(foo[[i]])

我并不喜欢使用*apply函数,但在这种情况下,sapply确实会导致更简单,更清晰的代码。