我正在尝试使用if
语句绘制下面的分段函数,并且我一直在使用
Error: unexpected '}' in "}"
消息。我的所有牙套对我来说都很好,所以我不知道它来自哪里。这里的任何建议将不胜感激。 (另外,这基本上是我第一次在R中做过这样的事情,所以请耐心等待。)
x.values = seq(-2, 2, by = 0.1)
n = length(x.values)
y.values = rep(0, n)
for (i in 1:n) {
x = x.values[i]
if (x <= 0) {
y.values = -x^3
} else if (x <= 1) {
y.values = x^2
} else {
y.values = sqrt(x)
} y.values[i] = y }
答案 0 :(得分:2)
这可以通过利用R函数通常被矢量化的事实而无需循环来完成。
例如:
library(tidyverse)
theme_set(theme_classic())
dat = data.frame(x=x.values)
在基地R,你可以这样做:
dat$y = with(dat, ifelse(x <= 0, -x^3, ifelse(x<=1, x^2, sqrt(x))))
使用tidyverse
功能,您可以:
dat = dat %>%
mutate(y = case_when(x <= 0 ~ -x^3,
x <= 1 ~ x^2,
TRUE ~ sqrt(x)))
然后,绘制:
ggplot(dat, aes(x,y)) + geom_line() + geom_point()
答案 1 :(得分:1)
当我确保换行符位于正确位置时,我不会收到有关意外符号的错误:
x.values = seq(-2, 2, by = 0.1)
n = length(x.values)
y.values = rep(0, n)
for (i in 1:n) {
x = x.values[i]
if (x <= 0) {
y.values = -x^3
} else if (x <= 1) {
y.values = x^2
} else {
y.values = sqrt(x)
}
y.values[i] = y
}
但是,我得到的是最后一行y
不存在的投诉。
由于这是家庭作业,我将停止这个部分答案:P