R-从公式获取输出值列表

时间:2019-03-23 18:14:15

标签: r formula equation

我有一个看起来像这样的公式:y = 2 + 3x + x ^ 2并且我有一个输入值列表,我想插入x并稍后对其进行图形化。

所以我要做的是

x<-seq(-2,2, length.out=20)
formula <- y~2+3*x+x^2

但是我不确定如何将x值列表插入公式并从代码中获取输出值。 任何帮助,将不胜感激。

3 个答案:

答案 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)

gsubfn中的

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