3

フィールドからの情報を使用し、それを R 関数に含めたい。

data #name of the data.frame with only one raw

"(if(nclusters>0){OptmizationInputs[3,3]*beta[1]}else{0})" # this is the raw

この情報を関数内で使用したい場合、どうすればよいですか?

Another example:
A=c('x^2')
B=function (x) A
B(2)
"x^2"  # this is the return. I would like to have the return something like 2^2=4.
4

3 に答える 3

3

Use body<- and parse

A <- 'x^2'

B <- function(x) {}

body(B) <- parse(text = A)

B(3)
## [1] 9

There are more ideas here

于 2013-03-07T00:14:31.803 に答える
3

を使用した別のオプションplyr

A <- 'x^2'
library(plyr)
body(B) <- as.quoted(A)[[1]]
> B(5)
[1] 25
于 2013-03-07T00:18:56.413 に答える
2
A  <- "x^2"; x <- 2
BB <- function(z){ print( as.expression(do.call("substitute", 
                                            list( parse(text=A)[[1]], list(x=eval(x) ) )))[[1]] ); 
               cat( "is equal to ", eval(parse(text=A)))
              }
 BB(2)
#2^2
#is equal to  4

R で式を管理するのは非常に奇妙です。substituteは最初の引数の評価を拒否するためdo.call、置換の前に評価が行われるようにするために を使用する必要があります。さらに、式の印刷された表現は、その根底にある表現を隠します。[[1]]結果の後にかなり難解な (私の考え方では) 削除してみてくださいas.expression(.)

于 2013-03-07T03:06:58.693 に答える