R 使用表(,sum()时出错。参数长度不一样?

R 使用表(,sum()时出错。参数长度不一样?,r,R,我正在尝试创建一个包含两列的表。第一列是文件编号,第二列是每个文件中完整案例的数量 我设法编写了一个函数,将我需要的单个文件处理成一个数据帧(几乎完全取自Coursera)。我能够使用这个函数来找到特定列的平均值,所以我认为它是有效的 然而,我得到的错误是,我的参数没有相同的长度。而且,这张桌子看起来不像我想要的样子。我想知道是否有人可以看一看,给我指出正确的方向 无论如何,这是我的代码和出现的错误: to.use <- list.files('specdata', full.names

我正在尝试创建一个包含两列的表。第一列是文件编号,第二列是每个文件中完整案例的数量

我设法编写了一个函数,将我需要的单个文件处理成一个数据帧(几乎完全取自Coursera)。我能够使用这个函数来找到特定列的平均值,所以我认为它是有效的

然而,我得到的错误是,我的参数没有相同的长度。而且,这张桌子看起来不像我想要的样子。我想知道是否有人可以看一看,给我指出正确的方向

无论如何,这是我的代码和出现的错误:

to.use <- list.files('specdata', full.names = TRUE)
all.data <- data.frame()
complete.table <- data.frame()
complete <- function(directory, id = 1:332) {
                for (i in id) {
                  all.data <- rbind(all.data, read.csv(to.use[i]))
                }
            subset_ad <- all.data[which(all.data[,"ID"] %in% id),]
            table(id, "nobs" = sum(complete.cases(subset_ad)))
}

提前谢谢

对于任何遇到这个问题并对(部分?)答案感兴趣的人,我设法重新考虑我的情况并完成了任务的这一部分

下面是最终代码和最终结果

to.use <- list.files('specdata', full.names = TRUE)
all.data <- data.frame()
comp_cas <- data.frame()
complete <- function(directory, id = 1:332) {
                for (i in id) {
                  all.data <- rbind(all.data, read.csv(to.use[i]))
                  subset_ad <- subset(all.data, ID %in% i)
                  comp_cas <- rbind(comp_cas, as.numeric(summary(complete.cases(subset_ad))[3]))
                }
                  cbind(id, "nobs" = unlist(comp_cas, use.names = FALSE))
}

对于任何遇到这个问题并对(部分?)答案感兴趣的人,我设法重新考虑我的情况并完成了任务的这一部分

下面是最终代码和最终结果

to.use <- list.files('specdata', full.names = TRUE)
all.data <- data.frame()
comp_cas <- data.frame()
complete <- function(directory, id = 1:332) {
                for (i in id) {
                  all.data <- rbind(all.data, read.csv(to.use[i]))
                  subset_ad <- subset(all.data, ID %in% i)
                  comp_cas <- rbind(comp_cas, as.numeric(summary(complete.cases(subset_ad))[3]))
                }
                  cbind(id, "nobs" = unlist(comp_cas, use.names = FALSE))
}
complete("specdata", 1)
complete("specdata", c(2,4,8,10,12))
complete("specdata", 30:25)
complete("specdata", 3)

     id nobs
[1,]  1  117
     id nobs
[1,]  2 1041
[2,]  4  474
[3,]  8  192
[4,] 10  148
[5,] 12   96
     id nobs
[1,] 30  932
[2,] 29  711
[3,] 28  475
[4,] 27  338
[5,] 26  586
[6,] 25  463
     id nobs
[1,]  3  243