r - 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'”。那么它有什么问题呢?
谢谢!
解决方案
GetValue[i]
GetValue
仅当(and i
) 存在时才有意义。比较:仅当且存在x+i
时才有意义,与有无无关,必须在使用前声明。x
i
x
i
在这种情况下,您需要GetValue
在循环之前定义。我建议
GetValue <- logical(length(child_birth))
以便分配足够的空间。在这种情况下,您可以完全删除该else
子句,因为默认逻辑值为FALSE
.
我还建议删除变量forloop
并使用
for(i in seq_along(child_birth))
为什么要在幻数49703 中硬连线?这些数字可能会发生变化。如果您将它们明确地放在代码中,那么您就是在为将来的错误做好准备。
推荐阅读
- python - 优化大量列上的不同值
- c# - 可以创建一个 C# 属性,该属性是由实体框架代码首次迁移获取的其他属性的组合
- python - 使用 python 通过 SSH 通过管道传输的 Tar 文件传输
- python - 更改包变量以更改装饰器行为
- firebase - 在 Firebase 中收听新数据
- php - 将 Symfony 项目从 3.2 升级到 3.4
- reactjs - Firebase 可调用函数失败 CORS 重定向
- python - 使用请求的连接错误
- node.js - 在安装节点后的 package.json 文件中,我想要一个可以使用一个命令自动编译我的任何 sass 文件的命令?
- cloudsight - Cloudsight API 无法识别参数