R- Получить список выходных значений из формулы - PullRequest
0 голосов
/ 23 марта 2019

У меня есть формула, которая выглядит примерно так: y = 2 + 3x + x ^ 2, и у меня есть список значений входных данных, которые я хотел бы вставить в x, а затем построить график позже.

Итак, что я делаю, это

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

Но я не уверен, как подключить список значений x к формуле и получить выходное значение из кодов. Любая помощь будет оценена.

Ответы [ 3 ]

1 голос
/ 23 марта 2019

Вы могли определить функцию для вычисления формулы, как показано ниже:

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
0 голосов
/ 23 марта 2019

fn$ в gsubfn может использоваться для преобразования формулы в функцию.Если перед такой функцией, как 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
0 голосов
/ 23 марта 2019

Вы можете превратить вашу формулу в функцию и использовать 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.

...