作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个函数需要期待 formula
作为输入,形式为 y~x
, 例如。然后,我需要传递一系列 x-values
进入那个公式得到y
的。
例如,如果我的公式是 y~x^2
,并且我的 x 值系列是 (1,2,3,4),那么我应该期望 (1,4,9,16) 作为输出。
假设我有这样的公式:formula1 <- y~x
:
这是我迄今为止尝试过的:
as.function(formula1)
model.frame
和 model.matrix
像这样:formula1 <- y~x^2
x <- c(1,2,3,4)
my_data <- data.frame("x" = x, "y" = rep(0,length(x)))
model_frame <- model.frame(formula1, data = my_data)
my_design_matrix <- model.matrix(formula1, model_frame)
最佳答案
我不确定这是否是最优雅的方式,但它应该按照您的要求进行:
这个想法是提取公式对象的右侧并将其解析为字符串。然后可以评估结果。
as.function <- function(formula) {
cmd <- tail(as.character(formula),1)
exp <- parse(text=cmd)
function(...) eval(exp, list(...))
}
y ~ a:c
.
> f <- as.function(y ~ x^2)
> f(x=1:10)
[1] 1 4 9 16 25 36 49 64 81 100
as.function <- function(formula) {
cmd <- tail(as.character(formula),1)
exp <- parse(text=cmd)
function(df) eval(exp, df)
}
> f <- as.function(y ~ x^2)
> f(data.frame(x=1:10))
[1] 1 4 9 16 25 36 49 64 81 100
关于r - 如何将公式转换为函数,或将公式应用于某些值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36680774/
我是一名优秀的程序员,十分优秀!