r - 读取 csv 文件时使用 colClasses 时 R 中的警告消息
问题描述
我正在使用 lapply 读取文件列表。这些文件有多个行和列,我对第一列中的第一行感兴趣。我正在使用的代码是:
lapply(file_list, read.csv,sep=',', header = F, col.names=F, nrow=1, colClasses = c('character', 'NULL', 'NULL'))
第一行有三列,但我只阅读第一列。从 stackoverflow 上的其他帖子中,我发现这样做的方法是使用colClasses = c('character', 'NULL', 'NULL')
. 虽然这种方法有效,但我想知道导致生成以下错误消息的根本问题,并希望防止它弹出:
“在 read.table(file = file, header = header, sep = sep, quote = quote, : cols = 1 != length(data) = 3"
解决方案
这是为了让您知道您只保留三列数据中的一列,因为它不知道如何处理colClasses
. "NULL"
请注意,您的 NULL 是用引号引起来的。
一个例子:
write.csv(data.frame(fi=letters[1:3],
fy=rnorm(3,500,1),
fo=rnorm(3,50,2))
,file="a.csv",row.names = F)
write.csv(data.frame(fib=letters[2:4],
fyb=rnorm(3,5,1),
fob=rnorm(3,50,2))
,file="b.csv",row.names = F)
file_list=list("a.csv","b.csv")
lapply(file_list, read.csv,sep=',', header = F, col.names=F, nrow=1, colClasses = c('character', 'NULL', 'NULL'))
结果是:
[[1]]
FALSE.
1 fi
[[2]]
FALSE.
1 fib
Warning messages:
1: In read.table(file = file, header = header, sep = sep, quote = quote, :
cols = 1 != length(data) = 3
这与您使用的相同:
lapply(file_list, read.csv,sep=',', header = F, col.names=F,
nrow=1, colClasses = c('character', 'asdasd', 'asdasd'))
但是如果你这样做,警告就会消失(结果你会得到该行的其余部分):
lapply(file_list, read.csv,sep=',', header = F, col.names=F,
nrow=1, colClasses = c( 'character',NULL, NULL))
您可以查看函数源代码中错误和警告的来源,例如,read.table
直接输入,然后在其后不带任何内容,然后在其中搜索您的特定警告。
推荐阅读
- ruby-on-rails - 我应该如何为定期更改但需要所有用户访问的 Rails 应用程序存储值?
- python - 如何在 Lambda 中处理来自 API Gateway 的二进制数据,反之亦然?
- python - 从命令行运行 python,只有项目导入失败
- python - Python:即使 myobj 或 myobj.myprop 为 None,也要记录 myobj.myprop?
- python - 遍历数据框正在返回字符串中未使用 strip() 删除的空格
- sapui5 - 在 SAP UI5 App 中加载图像是否有稳定的解决方案?
- c# - ASP.net core 2.2 web 应用程序找不到来自 Razor 类库的页面
- c# - protobuf 的 RepeatedField 的映射
类型 - c++ - 使用 Qt 时删除 CMake 3.14.0 中的 CMP0020 错误
- javascript - 如何根据正则表达式检查 hasMatch