R中变量的声明

R中变量的声明,r,R,我在R Studio中使用变量时遇到问题。我的代码如下。“child_birth”是由49703个字符串组成的向量,表示有关childre出生的一些信息。我在这里做的是告诉你向量中每个元素的最后7个字符是否是“在家”。所以我使用了for循环和if语句。如果它是“在家”,那么向量“GetValue”中的对应元素将为TRUE forloop <- (1:49703) for (i in forloop){ temp <- child_birth[i] if (substr(tem

我在R Studio中使用变量时遇到问题。我的代码如下。“child_birth”是由49703个字符串组成的向量,表示有关childre出生的一些信息。我在这里做的是告诉你向量中每个元素的最后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 }
}

forloop
GetValue[i]
只有在存在
GetValue
(和
i
)时才有意义。比较:
x+i
仅在存在
x
i
时才有意义,这与使用前是否必须声明
x
i
无关

在这种情况下,需要在循环之前定义
GetValue
。我推荐

GetValue <- logical(length(child_birth))

为什么在49703中使用硬线?这些数字可能会发生变化。如果您将它们明确地放在代码中,您将为将来的bug做好准备。

非常感谢您的解决方案!但我仍然有一个问题,我到底需要预先声明变量吗?例如,在上面的代码中,我没有声明“I”,但我可以在For循环中使用它。但是,我不能在没有声明的情况下使用“GetValue”。我现在有点糊涂了。@kaiyuwei您并不是在这里声明
GetValue
——您是通过赋值创建它的。for循环构造完成创建计数器变量
i
的工作。R更接近Python,而不是C或Java。它不是一种编译语言(因此声明的概念有点没有动机),但是在使用变量之前仍然需要创建一个变量。在
GetValue中
for(i in seq_along(child_birth))