首页 > 解决方案 > 我对 R 中的“for”函数有疑问

问题描述

首先,我想明确一点,英语不是我的母语,我说得不好,所以我很抱歉有任何错误。

我将在下面介绍我遇到问题的那一行。

vetor = iris$Sepal.Length

for (i in vetor) {
mean = mean(vetor)
  SD = sd(vetor)
  zscore = ((i-mean)/SD)
  print(paste("The z score number", 1:150, "is",  zscore))
}

我想要发生的是它回来了

“z 分数 1 是……”

“z 分数 2 是……”

等等。事实上,他实际上把它还给了我,但是当他完成时,他又重新开始并重复了至少 13 次。我不知道为什么会这样。

标签: r

解决方案


如果我理解正确,您想计算iris$Sepal.Length. 您不需要循环来执行此操作:R 默认情况下是矢量化的,这意味着它同时适用于列中的每个值。

所以,你可以在不使用循环的情况下做我认为你想做的事:

# Calculate the mean
mean = mean(vetor)
# Calculate the SD
SD = sd(vetor)
# Calculate the z-scores of every value in the vector, all at the same time
zscore = ((vetor-mean)/SD)
# Format the output as required.
print(paste("The z score number", 1:150, "is",  zscore))
  [1] "The z score number 1 is -0.897673879196766"   
  [2] "The z score number 2 is -1.13920048346495"    
  [3] "The z score number 3 is -1.38072708773314"    
  [4] "The z score number 4 is -1.50149038986724"    
  [5] "The z score number 5 is -1.01843718133086"    
  [6] "The z score number 6 is -0.535383972794483"   
  [7] "The z score number 7 is -1.50149038986724"    
  [8] "The z score number 8 is -1.01843718133086"    
  [9] "The z score number 9 is -1.74301699413542"    
 [10] "The z score number 10 is -1.13920048346495"   
<output truncated>

推荐阅读