删除字符串的引用以使其成为表达式

时间:2012-02-09 00:19:00

标签: r expression eval quote

我想将公式传递给函数,但我不能从公式的字符串中删除双引号。我怎么能这样做?感谢。

clust_start=c(1,100)
i <- 1 
Lambexp <- 1:99
rank <- 1:99
alpha <- 1:99
d <- 1
b <- 1:2
ww=as.matrix(c(1:99), nrow=99)
expression.logdens <- paste(Lambexp[rank[(clust_start[i]:(clust_start[i + 1] - 1))]],         
"*exp(", alpha[(clust_start[i]:(clust_start[i + 1] - 1))], " + bb*", ww[(clust_start[i]:    
(clust_start[i + 1] - 1)), d], " - ", b[d]*ww[(clust_start[i]:(clust_start[i + 1] - 1)),     
d], ")", sep="")  

expr.formula <- paste(expression.logdens, sep="", collapse=" + ")

我尝试了expr.formula&lt; - as.expression(expr.formula)和as.name(expr.formula),但它们没有用。

logdens <- function(bb){
    y <- expr.formula    
        return(y)
    }
logdens(1)

2 个答案:

答案 0 :(得分:4)

你想要这个:

logdens <- function(bb){
  eval(parse(text=expr.formula))
}

输出:

> logdens(1)
[1] 1.539673e+45

答案 1 :(得分:0)

它就像as.formula(expr.formula)一样简单...一旦你确定你的公式实际上有效;)