R读取世界银行GDP数据时数值被识别为非数值的问题排查
问题原因解析
- 世界银行导出的CSV数据中存在非纯数字内容:比如部分年份的GDP增长率用
..表示缺失值,或是带有百分号%、千分位逗号、空格,甚至是注释类文本。这些非纯数字内容会被R识别为字符型,即便大部分数据是数值,整个数据列(或你提取的gdp对象)也会变成数字与字符混合的类型。 - 你提取的
gdp实际是数据框而非数值向量:data[1,-1]提取的是第一行除第一列外的所有列,返回结果是一个数据框,unname()仅去除列名,并未将其转换为数值向量。数据框中只要存在字符型元素,mean()、round()这类要求数值型输入的函数就会报错。 - 视觉显示存在误导:直接查看
gdp时看到的是数字形式,但这只是R的打印展示,变量的真实存储类型是字符型(或混合类型),str()和dput()命令才能反映变量的实际类型。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

