使用R在for循环中创建动态数组并为其赋值的最佳方法是什么
我想从excel文件中获取值,并将其中的某些值分配给数组。开始时,我尝试了下面的代码,它成功了。但在重新启动r studio并再次执行所有操作后,它向我显示了此错误 USComp2005\U 2000\U 3000[m]=USComp2005$SIC[i]中的错误: 找不到对象“USComp2005\U 2000\U 3000” 我不知道一开始是怎么回事使用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
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 hmUSComp2005_6000=6000)和(USComp2005$SIC<7000)]
不起作用。当我运行函数时,变量USComp2005_6000没有被创建。它起作用:set.seed(42);d0.7)和(d0.8),];dC[(dA>0.7)和(dB<-0.8)]
请给出一个可复制的例子