为什么要从以下for循环获取NAs?

为什么要从以下for循环获取NAs?,r,for-loop,R,For Loop,我试图写一个for循环,用5个值来规范化向量x。但是,在运行下面的代码之后,我得到的前四个值是NAs,最后一个值是预期值。有人能指出问题所在吗?提前谢谢你 x <- c(8.58, 10.46, 9.01, 9.64, 8.86) x_mean <- mean(x) x_sd <- sd(x) n_x <- numeric() for(i in length(x)){ n_x[i] <- x[i] - x_mean / x_sd } print(n_x)

我试图写一个for循环,用5个值来规范化向量x。但是,在运行下面的代码之后,我得到的前四个值是NAs,最后一个值是预期值。有人能指出问题所在吗?提前谢谢你

x <- c(8.58, 10.46, 9.01, 9.64, 8.86)
x_mean <- mean(x)
x_sd <- sd(x)
n_x <- numeric()
for(i in length(x)){
   n_x[i] <- x[i] - x_mean / x_sd 
}
print(n_x)

x正如评论中所建议的那样,你的帖子中有几处拼写错误。如果您纠正了它们,您的代码应该可以工作。除此之外,您可以以矢量化的方式执行此操作,而无需
for
循环

x <- c(8.58, 10.46, 9.01, 9.64, 8.86)
x_mean <- mean(x)
x_sd <- sd(x)
n_x <- (x - x_mean)/x_sd
n_x
#[1] -0.9718658  1.5310215 -0.3993969  0.4393366 -0.5990954

x您只需将
length
替换为
seq\u即可

x <- c(8.58, 10.46, 9.01, 9.64, 8.86)
x_mean <- mean(x)
x_sd <- sd(x)
n_x <- numeric()
for(i in seq_along(x)){
  n_x[i] <- (x[i] - x_mean) / x_sd 
}

n_x
编辑:


您在
x[i]-x_mean/x_sd

中也缺少括号,应该是
for(i in 1:length(x)){n_x[i]非常感谢!这非常有用!
-0.9718658  1.5310215 -0.3993969  0.4393366 -0.5990954