Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用R在for循环中创建动态数组并为其赋值的最佳方法是什么_R - Fatal编程技术网

使用R在for循环中创建动态数组并为其赋值的最佳方法是什么

使用R在for循环中创建动态数组并为其赋值的最佳方法是什么,r,R,我想从excel文件中获取值,并将其中的某些值分配给数组。开始时,我尝试了下面的代码,它成功了。但在重新启动r studio并再次执行所有操作后,它向我显示了此错误 USComp2005\U 2000\U 3000[m]=USComp2005$SIC[i]中的错误: 找不到对象“USComp2005\U 2000\U 3000” 我不知道一开始是怎么回事 library(readxl) USComp2005 <- read_excel("USCompanies2005.xlsx",shee

我想从excel文件中获取值,并将其中的某些值分配给数组。开始时,我尝试了下面的代码,它成功了。但在重新启动r studio并再次执行所有操作后,它向我显示了此错误

USComp2005\U 2000\U 3000[m]=USComp2005$SIC[i]中的错误: 找不到对象“USComp2005\U 2000\U 3000”

我不知道一开始是怎么回事

library(readxl)
USComp2005 <- read_excel("USCompanies2005.xlsx",sheet = "Data")
getValues <- function() 
{
 n=0
 m=0
 for (i in 1:6992) {
    if ((USComp2005$SIC[i] >= 6000) && (USComp2005$SIC[i] < 7000)) {
         n=n+1
         USComp2005_6000[n] = USComp2005$SIC[i]
     }
     else if ((USComp2005$SIC[i] >= 2000) && (USComp2005$SIC[i] < 4000)) {
         m=m+1
         USComp2005_2000_3000[m] = USComp2005$SIC[i]
     }
 }
}
库(readxl)
USComp2005=2000)和&(USComp2005$SIC[i]<4000)){
m=m+1
USComp2005\U 2000\U 3000[m]=USComp2005$SIC[i]
}
}
}

为循环或R中的函数在
内创建的变量具有局部作用域(即,它们只能从该循环内访问)。应该在循环之前初始化向量,然后填充它们。比如:

USComp2005_6000 = USComp2005_2000_3000 = NULL
for (condition) {
  ...
  USComp2005_6000[n] = ...
  ...
}
也可以使用全局赋值:

function(){ USComp = ... } # USComp is local

USComp = NULL; function(){ USComp = ... } # global by initialization

function(){ USComp <<- ... } # global by assignment
function(){USComp=…}#USComp是本地的
USComp=NULL;函数(){USComp=…}#通过初始化全局

函数({USComp hm
USComp2005_6000=6000)和(USComp2005$SIC<7000)]
不起作用。当我运行函数时,变量USComp2005_6000没有被创建。它起作用:
set.seed(42);d0.7)和(d0.8),];dC[(dA>0.7)和(dB<-0.8)]
请给出一个可复制的例子