首页 > 解决方案 > read.csv 错误地将字符串转换为整数

问题描述

这是对该问题的后续跟进:read.csv falsly converts string to integer

我有一个 CSV 文件(玩具示例):

V1,V2,V3
1,00010,a
2,10010,v

我想将第二列读取为字符串值。

我知道 read.csv 中的 colClasses 方法错误地将字符串转换为整数问题。

但是,我的数据文件包含 5,000 多列混合变量类型,而只有一列有问题。我可以做这样的事情:

df <- read.csv("data.csv"); temp <- sapply(df,class); temp[2] <- "character"; df <- read.csv("data.csv",colClasses=temp)

但这是一种非常丑陋的编码方式。有没有更勤奋的方法来做到这一点?

标签: r

解决方案


colClasses如果使用命名向量,则不必指定每一列。

txt <- "V1,V2,V3
1,00010,a
2,10010,v
"

df <- read.csv(text = txt, colClasses = c(V2 = "character"))

str(df)
#> data.frame': 2 obs. of  3 variables:
#>  $ V1: int  1 2
#>  $ V2: chr  "00010" "10010"
#>  $ V3: chr  "a" "v"

推荐阅读