为什么R语言中read.csv()读取CSV文件返回列表而非数据框
问题原因
R 中数据框(data.frame)的底层存储类型本身就是列表,它是一种特殊的、所有元素长度相等的列表结构,每个元素对应数据框的一列。你使用typeof()函数查询的是对象的底层存储类型,因此只要是数据框,typeof()返回结果必然是"list",这属于正常现象,并非读入CSV出错。
验证数据框是否读入成功的正确方法
不要用typeof()判断,改用以下两类方法:
- 调用
class(bank),正常读入的CSV会返回"data.frame" - 调用
is.data.frame(bank),返回值为TRUE即说明是有效数据框
操作补充说明
read.csv()默认返回值就是数据框,你后续执行bank <- data.frame(bank)属于冗余操作,不会改变对象的结构,因此typeof()结果不会变化- 你输出的
colnames(bank)已经可以正常返回所有列名,也佐证了该对象是结构完整的数据框,不需要额外用do.call(rbind...)做转换 - 如果需要确认数据结构符合预期,还可以调用
str(bank)查看每列的类型和样本值,或者调用nrow(bank)、ncol(bank)查看行列数是否和原始CSV一致
内容的提问来源于stack exchange,提问作者user16951674
相关产品推荐
相关产品推荐

