首页 > 解决方案 > R中的变量声明

问题描述

我在 R Studio 中使用变量时遇到问题。我的代码如下。"child_birth" 是一个由 49703 个字符串组成的向量,表示有关孩子出生的一些信息。我在这里所做的是判断向量的每个元素中的最后 7 个字符是否“在家”。所以我使用了一个 for 循环和一个 if 语句。如果它是“在家”,那么向量“GetValue”中的相应元素将为 TRUE。

forloop <- (1:49703)
for (i in forloop){
  temp <- child_birth[i]
  if (substr(temp, nchar(temp)-6, nchar(temp)) == "at home" ) {
    GetValue[i] = TRUE
  }
  else{ GetValue[i] = FALSE }
}

我用谷歌搜索它以确保在 RI 中不需要在使用变量之前进行预声明。但是当我运行上面的代码时,我得到了错误信息:“错误:找不到对象'GetValue'”。那么它有什么问题呢?

谢谢!

标签: r

解决方案


GetValue[i]GetValue仅当(and i) 存在时才有意义。比较:仅当且存在x+i时才有意义,与有无无关,必须在使用前声明。xixi

在这种情况下,您需要GetValue在循环之前定义。我建议

GetValue <- logical(length(child_birth))

以便分配足够的空间。在这种情况下,您可以完全删除该else子句,因为默认逻辑值为FALSE.

我还建议删除变量forloop并使用

for(i in seq_along(child_birth))

为什么要在幻数49703 中硬连线?这些数字可能会发生变化。如果您将它们明确地放在代码中,那么您就是在为将来的错误做好准备。


推荐阅读