有没有办法强制使用字符向量来评估多个变量?
例如:
x = 1
y = 2
而不是这样做:
force( x )
force( y )
做这样的事情:
force( ls() )
答案 0 :(得分:5)
用force()
替换eval(as.symbol())
可以解决问题:
## Modified from an example in ?force (h.t. @flodel)
g <- function(x,y) {
lapply(ls(), function(X) eval(as.symbol(X)))
function() x+y
}
lg <- vector("list", 4)
for (i in 1:2) for (j in 1:2) lg[[i+j-1]] <- g(i,j)
lg[[1]]()
# [1] 2
这是有效的,因为如?force
中所述:
[force]是语义糖:只需评估符号即可 同样的事情