我有一个包含许多列的 .csv 数据文件。不幸的是,字符串值没有引号(即,apples io "apples)。当我使用 readr 包中的 read_csv 时,字符串值被导入为字符:
library(readr)
mydat = data.frame(first = letters, numbers = 1:26, second = sample(letters, 26))
write.csv(mydat, "mydat.csv", quote = FALSE, row.names = FALSE)
read_csv("mydat.csv")
结果是:
Parsed with column specification:
cols(
first = col_character(),
numbers = col_integer(),
second = col_character()
)
# A tibble: 26 x 3
first numbers second
<chr> <int> <chr>
1 a 1 r
2 b 2 n
3 c 3 m
4 d 4 z
5 e 5 p
6 f 6 j
7 g 7 u
8 h 8 l
9 i 9 e
10 j 10 h
# ... with 16 more rows
有没有办法强制 read_csv 将字符串值作为因子 io 字符导入?
重要的是,我的数据文件有这么多列(字符串和数字变量),AFAIK 无法通过提供带有 col_types 参数的列规范来完成这项工作。
替代解决方案(例如,使用 read.csv 导入数据,或使用 dplyr 代码将数据框中的所有字符变量更改为因子)也受到赞赏。
更新:我了解到 csv 文件中的值是否有引号对 read.csv 或 read_csv 没有影响。read.csv 会将这些值作为因子导入;read_csv 会将它们作为字符导入。我更喜欢使用 read_csv,因为它比 read.csv 快得多。