我在下面显示的循环中创建了一个对象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
答案 0 :(得分:1)
函数中定义的对象在函数外部不可用。如果从函数返回值,则必须将结果存储在某处。尝试
obs <- complete("specdata", ID<-c(2,4,8,10,12))
print(obs)
这可以防止您必须知道自己可能没有自己编写的函数内部的变量名称。