R:如何迭代未知长度的向量
我明白了。可以删除 我在寻找一个平均值的单个整数,即E yi(xi-u)^2的最小平方,其中“E”是大和。所以,(1*((0.1-0.108)^2))+(2*((0.11-0.108)^2))+ 这个用R怎么说?len不是一个函数,length使用与实际长度相对应的数值…不管从一开始迭代多长时间R:如何迭代未知长度的向量,r,loops,vector,string-length,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)) {
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)
}
}
x我完全不知道你的问题是什么,但我会借此机会说出来
for (i in 1:length(x))
...
这不是一个好的做法,因为当x
的长度为0时,它会断开。原因是1:0
是c(1,0)
在R:
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中,您可以使用向量,而不是为循环编写。我感到困惑。1:length(x)
中的i有什么问题?您正在运行的代码会产生什么样的输出?另请参见?seq_len
和?seq_along
似乎您的python也生锈了…在我看来,您希望使用for(x中的i)
和for(y中的j)
这在R中可以很好地工作。如果您试图计算x的加权平方误差,那么您应该将计算矢量化。len(vector)中的i的在python中做什么?既然len(vector)
不是一个列表,我想它只是抛出了一个错误。@JamesKing它确实给出了一个错误,正是这样:TypeError:“int”对象是不可写的
我认为for(elem in x)
是OP所想的,但这段代码仍然不会给出他想要的答案。我想他只是想计算一下总和(y*(x-均值(x))^2)=0.0001365762使用seq_len,我得到错误“警告消息:在seq_len(x)中:使用'length.out'参数的第一个元素”@user3814464如果你一直以不同于别人告诉你的方式做事,那么我们能做什么?:)说真的,请用我回答中的一种形式。如果你坚持要问这个问题,我会编辑这个问题来补充。但是你只需要(x中的i)
,或者更好的是,@JamesKing提供给你的向量化形式。