首页 > 解决方案 > 在 R 中使用全局变量和局部变量

问题描述

我是 R 编程的初学者,我试图创建一个如下所述的 for 循环,当我运行代码时,我得到了正确的输出。

但是,当我只看到 mtcars$M 时,输出与我运行循环时得到的不同。编码时有什么我错过的吗?我们如何处理全局和局部变量?

for (i in mtcars[,1]) {
  if(i >= 15){
   M <- print("the value is greter than 15")} else {
    M <-  print("the value is not greter than 15")
    mtcars$M <- M
    }
}

标签: r

解决方案


你的错误来了,因为你只分配列 M,当值不大于 15 时。所以整个列将是相同的。您必须在 if-else 条件之外分配值,并指定要将值保存在哪一行。如果您只是使用mtcars$M <- M它将向量 M, 分配给该列的所有行。

for (i in seq_along(mtcars$mpg)) {
  if(mtcars$mpg[i] >= 15){
    M <- "the value is greter than 15"
  } else {
    M <-  "the value is not greter than 15"
  }
  print(M)
  mtcars$M[i] <- M
}

mtcars$M

推荐阅读