Два выпуска:
От ?print
‘print’ печатает аргумент и возвращает его невидимо (через
«Невидимым (х)»)
Таким образом, ваша функция f
выполняет только печать значений на консоли (вместо их возврата).
Согласно вашему определению f
, функция не знает, как обращаться с x=0
; поэтому это создаст проблему при сохранении вывода f(0)
позже.
Мы можем исправить эти проблемы, слегка изменив f
на
f <- function(x) {
y_values <- NA
if (x<0){
y_values<-x*x*x
}
if(x>0 & x<=1){
y_values<-x*x
}
if(x>1){
y_values<-sqrt(x)
}
return(y_values)
}
Тогда
x_values <- seq(-2, 2, by = 0.1)
y_values <- rep(NA, length(x_values))
for (i in seq_along(x_values)) {
x <- x_values[i]
y_values[i] <- f(x)
}
plot(x_values, y_values, type = "l")
Вы также можете использовать Vectorize
для получения векторизованной функции f2
, которая позволяет вам передавать x_values
как вектор, избегая тем самым явного цикла for
:
f2 <- Vectorize(f)
x_values <- seq(-2, 2, by = 0.1)
y_values <- f2(x_values)
Полученный сюжет такой же