我在函数内部使用for循环创建了一个对象,但在尝试打印时找不到打印对象中的错误

时间:2014-11-12 14:42:05

标签: r

我在下面显示的循环中创建了一个对象obs,循环返回obs。然而,当我尝试打印obs时,我得到的信息是找不到obs。我是编程R的新手,我迷路了。我试过谷歌搜索问题,但没有找到答案。

complete<-function(directory,ID){
files_list <- list.files( directory , full.names=TRUE) #creates a list of files
dat <- data.frame() #creates an empty data frame
for (i in 1:332) { #loops through the files, rbinding them together
  dat <- rbind(dat, read.csv(files_list[i]))
}
cleandat<-na.omit(dat)
obs<-c()
for(i in ID){
  n<-nrow(cleandat[cleandat$ID %in% i,])

  obs<-append(obs,n)
}

return(obs)
}
complete("specdata", ID<-c(2,4,8,10,12))

[1] 1041  474  192  148   96

print(obs)
Error in print(obs) : object 'obs' not found

1 个答案:

答案 0 :(得分:1)

函数中定义的对象在函数外部不可用。如果从函数返回值,则必须将结果存储在某处。尝试

obs <- complete("specdata", ID<-c(2,4,8,10,12))
print(obs)

这可以防止您必须知道自己可能没有自己编写的函数内部的变量名称。