удалить цитату строки, чтобы сделать ее выражением - PullRequest
1 голос
/ 09 февраля 2012

Я хочу передать формулу функции, но не могу удалить двойную кавычку из строки формулы. Как я мог это сделать? Спасибо.

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 <- as.expression (expr.formula) и as.name (expr.formula), они не работали. </p>

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

Ответы [ 2 ]

4 голосов
/ 09 февраля 2012

Вы хотите это:

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

Вывод:

> logdens(1)
[1] 1.539673e+45
0 голосов
/ 09 февраля 2012

Это так же просто, как as.formula(expr.formula) ... как только вы исправите формулу, чтобы она действительно действовала;)

...