想出来。可以删除。
我正在寻找平均值的单个整数,以最小化E yi(xi-u)^ 2的最小二乘,其中“E”是大的总和。所以,(1 *((0.1-0.108)^ 2))+(2 *((0.11-0.108)^ 2))+ ...
这个怎么说在R? len不是一个函数,length使用对应于实际长度的数值...不会从开始彻底迭代。
x<-c(0.1, 0.11, 0.111, 0.1111)
y<-c(1, 2, 3, 4)
avg = mean(x)
for (i in 1:length(x)) {
for (j in 1:length(y)) {
mu = sum(j*(i-avg)^2)
print(mu)
}
}
答案 0 :(得分:3)
我完全不确定你的问题是什么,但是会借此机会说出来
for (i in 1:length(x))
...
不是一种好习惯,因为当x
长度为0时,它会中断。原因是R中1:0
为c(1,0)
:
1:0
# [1] 1 0
所以,正如@thelatemail已经提到的那样,seq_len
或seq_along
是迭代矢量或列表上的索引的正确方法:
for (i in seq_along(x))
...
使用seq_len
:
for (i in seq_len(length(x)))
...
从你的问题看来,你似乎很想迭代矢量或列表的元素,所以你可以简单地说
for (elem in x)
...
另请注意,在R中,您可以使用向量而不是编写for
循环。