【发布时间】:2017-12-19 10:59:56
【问题描述】:
我正在尝试编写一个代码,它 (1) 从目录中读取指定范围的文件,(2) 计算每个文件中完整行的数量,以及 (3) 将我的答案作为 2 列数据框返回 (具有指定的列名)。
complete <- function(directory, ID){
filelist <- list.files(directory, full.names = TRUE)[ID]
x <- lapply(filelist, function(x){read.csv(x, header = TRUE)})
y <- complete.cases(data.frame(x))
z <- sum(y*1)
print(z)
}
它适用于 1 个文件,但不适用于一个范围,如果我使用 complete("directory", 1:2) 我得到:
错误(函数(...,row.names = NULL,check.rows = FALSE,check.names = TRUE,: 参数暗示不同的行数:1461、3652
一旦我可以获得完整值的数量,我想我就可以计算出如何返回数据框。
提前致谢,
玫瑰
【问题讨论】:
-
您可以将逻辑向量乘以 1 ... 这将为每个
TRUE留下 1,为每个FALSE留下 0 ... 然后很容易总结并为您提供总数。 -
@Val 我试过了,虽然它适用于 1 个文件,但当我使用一个范围(例如 1:2)时,出现以下错误 Error in (function (..., row.names = NULL,check.rows = FALSE,check.names = TRUE,:参数暗示不同的行数:1461、3652
-
很难说没有关于您的文件的任何信息......但错误意味着您正在为
data.frame分配一个变量,该变量的观察值比 df 的行数多或少。跨度> -
@Val 我没有为数据框设置行号 - 由于错误,使用 data.frame() 只是我尝试的解决方法:“complete.cases(x) 中的错误:参数的“类型”(列表)无效”
-
a
data.frame传统上每个变量(列)有多个观察值(行)。您无需在此处设置任何内容。但是,如果您尝试添加到data.frame,则需要一个适合data.frame尺寸的变量