我想编写一个R while循环,它将使用公式打印log(x)的值
log(x) = −0.076 + 0.281x −0.238/(x+0.15)
,
内置的R函数log10
,以及两个值之间的绝对差值,对于x的以下值:x = 0.1, 0.2, . . . , 0.9, 1.0
我的代码如下:
x <- seq(0.1, 1, by = 0.1)
i <- 0
while(i < 10) {
i <- i + 1
LOG[i] <- -0.076 + 0.281*x[i] - 0.238/(x[i] + 0.15)
lg[i] <- log10(x[i])
ab[i] <- abs(lg[i] - LOG[i])
cat("i = ", i, "LOG = ", LOG, "log = ", lg, "abs = ", ab, fill = TRUE)
}
但是我有一个错误:
Error: object 'LOG' not found.
我究竟做错了什么?我需要创建对象LOG<-NULL
吗?谢谢
是的,你需要首先创建对象LOG
,lg
和ab
。
但是R有一个很好的功能,称为矢量化,它允许您同时对矢量的每个元素应用一个操作(不需要循环)。代码可以这样:
x <- seq(0.1, 1, by=0.1)
LOG <- -0.076+0.281*x-0.238/(x+0.15)
lg <- log10(x)
ab <- abs(lg - LOG)