【发布时间】:2014-09-18 11:01:16
【问题描述】:
我希望计算一个包含算术表达式的字符串向量——“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
【问题讨论】:
-
如何使用
sapply进行矢量化? -
@DavidArenburg 因为他同时对向量的多个元素进行操作?
-
@iShouldUseAName,
sapply与for循环相同,只是速度较慢。对于这样简单的操作,for循环将是更好的选择。在R中,这不是您所说的“矢量化解决方案”的意思 -
从头开始。同一时间。
-
@iShouldUseAName,不,不是。我也对其进行了测试,并且 for 循环获胜。将此与您的
sapply进行比较:for(i in seq_along(foo)){ eval(parse(text = foo[i])) }
标签: r evaluation arithmetic-expressions