gpt4 book ai didi

r - R代码调试和纠错理解

转载 作者:行者123 更新时间:2023-12-03 08:11:45 25 4
gpt4 key购买 nike

我编写了这段代码iv,用于计数,它读取了一个充满文件的目录,并报告了每个数据文件中完全观察到的病例数。该函数应返回一个数据帧,其中第一列是文件名,第二列是完整案例数。我需要此代码错误的帮助:

Error in [.data.frame(data, i) : undefined columns selected
In addition: Warning messages:
1: In comp[i] <- !is.na(data[i]) : number of items to replace is not a multiple of replacement length
2: In comp[i] <- !is.na(data[i]) : number of items to replace is not a multiple of replacement length
3: In comp[i] <- !is.na(data[i]) : number of items to replace is not a multiple of replacement length



代码如下:
complete<-function(directory, id=1:332){
files.list<-list.files(directory, full.names=TRUE, pattern=".csv")
comp<-character()
return.data<-data.frame()
nobs<-numeric()

for(i in id){
data<-read.csv(files.list[i])
comp[i]<-!is.na(data[i])
nobs[i]<-nrow(comp[i])

}
return.data<-c(id,nobs)
}

最佳答案

您的问题是,!is.na()返回一个 bool(boolean) vector 而不是单个值,您不能在单个元素comp[i]中插入多个元素。

R中,有一个函数complete.cases确实可以完成您尝试的操作。有了这个你的功能看起来像这样

complete<-function(directory, id=1:332){
files.list<-list.files(directory, full.names=TRUE, pattern=".csv")
nobs <- numeric(length(id))
for(i in id){
data<-read.csv(files.list[i])
nobs[i]<-sum(complete.cases(data))
}
return.data<-data.frame(id,nobs)
}

除了你的代码,我想指出一些缺陷
  • 为什么comp类型为character
  • 如果事先知道 vector 的大小,则分配它的大小(nobs <- numeric(length(id)))
  • 您真的要只检查i的data.frame`列的i的缺失值吗?
  • (如果您分配return.data <- c(id,nobs))return.data将是单个数字 vector ,开头为ids,结尾为nobs
  • 关于r - R代码调试和纠错理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40148427/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com