我有一个看起来像这样的公式:y = 2 + 3x + x ^ 2并且我有一个输入值列表,我想插入x并稍后对其进行图形化。
所以我要做的是
x<-seq(-2,2, length.out=20)
formula <- y~2+3*x+x^2
但是我不确定如何将x值列表插入公式并从代码中获取输出值。 任何帮助,将不胜感激。
答案 0 :(得分:1)
您本可以定义一个函数来计算公式,如下所示:
getScore <- function(x) {
2+3*x+x^2
}
x <- seq(-2,2, length.out=20)
getScore(x)
[1] 0.00000000 -0.16620499 -0.24376731 -0.23268698 -0.13296399 0.05540166
[7] 0.33240997 0.69806094 1.15235457 1.69529086 2.32686981 3.04709141
[13] 3.85595568 4.75346260 5.73961219 6.81440443 7.97783934 9.22991690
[19] 10.57063712 12.00000000
答案 1 :(得分:0)
您可以将公式变成函数并使用sapply
:
x = seq(-2,2, length.out=20)
my.function = function(x){
return(2+3*x+x^2)
}
y = sapply(x, my.function)
> y
[1] 0.00000000 -0.16620499 -0.24376731 -0.23268698 -0.13296399 0.05540166 0.33240997
[8] 0.69806094 1.15235457 1.69529086 2.32686981 3.04709141 3.85595568 4.75346260
[15] 5.73961219 6.81440443 7.97783934 9.22991690 10.57063712 12.00000000
如果您希望使用list
,请使用lapply
而不是sapply
。
答案 2 :(得分:0)
fn$
可用于将公式转换为函数。如果将诸如identity
之类的函数以fn$
开头,则参数中的公式将转换为一个函数,然后将运行fn$
序言的函数。公式的LHS应该是函数的输入变量或为空。在后一种情况下,它将使用RHS上的自由变量作为参数。 RHS是身体。
library(gsubfn)
fo[[2]] <- NULL # remove LHS
fun <- fn$identity(fo) # create function from formula
fun
## function (x)
## 2 + 3 * x + x^2
fun(x)
## [1] 0.00000000 -0.16620499 -0.24376731 -0.23268698 -0.13296399 0.05540166
## [7] 0.33240997 0.69806094 1.15235457 1.69529086 2.32686981 3.04709141
## [13] 3.85595568 4.75346260 5.73961219 6.81440443 7.97783934 9.22991690
## [19] 10.57063712 12.00000000