R:如何通过未知长度的向量进行迭代

时间:2014-08-11 02:14:22

标签: r loops vector string-length

想出来。可以删除。

我正在寻找平均值的单个整数,以最小化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)
    }
}

1 个答案:

答案 0 :(得分:3)

我完全不确定你的问题是什么,但是会借此机会说出来

for (i in 1:length(x))
...

不是一种好习惯,因为当x长度为0时,它会中断。原因是R中1:0c(1,0)

1:0
# [1] 1 0

所以,正如@thelatemail已经提到的那样,seq_lenseq_along是迭代矢量或列表上的索引的正确方法:

for (i in seq_along(x))
...

使用seq_len

时,它会更长一些,可读性更低
for (i in seq_len(length(x)))
...

从你的问题看来,你似乎很想迭代矢量或列表的元素,所以你可以简单地说

for (elem in x)
...

另请注意,在R中,您可以使用向量而不是编写for循环。