R:使用 read.csv() 尊重数字周围的引号(视为字符)?

标签 r csv formatting

我有一个 .csv 文件,其中包含 00xxxxx 形式的帐户代码,我需要它们保持这种状态,以便与使用此格式帐户代码的其他程序一起使用。我只是在编写 R 脚本来协调周五的帐户费用,并发誓 as.is = T 对我有用。现在,它似乎不是。以下是一些示例数据:

test <- data.frame(col1 = c("apple", "banana", "carrot"),
                   col2 = c(100, 200, 300),
                   col3 = c("00234", "00345", "00456"))

我的 write.table 策略:
write.table(test, file = "C:/path/test.csv", quote = T,
            sep=",", row.names = F)

删除旧的 data.frame 并重新阅读:
rm(test)
test <- read.csv("C:/path/test.csv")
test

    col1 col2 col3
1  apple  100  234
2 banana  200  345
3 carrot  300  456

如果不清楚,它应该看起来像我们创建的原始 data.frame:
test
    col1 col2  col3
1  apple  100 00234
2 banana  200 00345
3 carrot  300 00456

在仔细阅读可用的 read.table 选项后,我还尝试了以下操作,结果与上述相同:
test <- read.csv("C:/path/test.csv", quote = '"')
test <- read.csv("C:/path/test.csv", as.is = T)
test <- read.csv("C:/path/test.csv", as.is = T, quote = '"')
StringsAsFactors 在这种情况下似乎并不相关(听起来 as.is 会做同样的事情。

当我在 Emacs 中打开文件时,col3 确实被引号包围,所以我希望它被视为文本而不是转换为数字:

emacs screenshot

大多数其他问题只是关于不处理因素之类的东西,或者让数字不被识别为字符,通常是该列中被忽略的字符串的结果。

我看到我可以从 this one 之类的问题中寻求 colClasses 论点,但我不想这样做;我的“colClasses”内置于数据中 :) 引用 = 字符,而不是引用 = 数字。

最佳答案

在 ping 几个 R 用户 friend 后,他们都建议使用 colClasses 。我松了一口气,发现我不需要指定每个类,因为我的数据是 ~25 列。所以证实了这一点(一旦我知道我在找什么) in another question

test <- read.csv("C:/path/test.csv", colClasses = c(col3 = "character"))
test

    col1 col2  col3
1  apple  100 00234
2 banana  200 00345
3 carrot  300 00456

就目前而言,该问题与解决方案相关的另一个问题是重复的。不同之处在于我正在寻找 colClasses 以外的方法(因为 as.is 听起来很可能是候选者),而那个问题是关于如何使用 colClasses

我要重申的是,我实际上并不喜欢这个解决方案,甚至认为它很简单。引号表示 .csv 中的文本字段,在这种情况下它们似乎不受尊重。 LibreOffice .csv 导入有一个复选框“将引用的字段视为文本”,我认为这类似于 R 中的 as.is = T。显然不是! #end_rant

关于R:使用 read.csv() 尊重数字周围的引号(视为字符)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22923756/

相关文章:

r - 将列表转换为矩阵或数组?

mysql - 从字段未封闭的 CSV 文件加载数据本地文件

eclipse - 如何防止 Eclipse 格式化程序弄乱带有文本符号的注释?

php - 使用 Zend Studio for Eclipse 在保存时格式化 PHP 源代码

php - 通过批处理 API 将窗口 csv 关联到 drupal 节点

formatting - 有没有办法漂亮地格式化或美化 NSIS 脚本源代码?

r - 在 Travis 上使用 devtools 安装 R 包时遇到问题

r - R中的agrep max.distance参数

r - rowSums(Qf) 错误: 'x' 必须是至少二维数组 (msm::msm2surv)

python - 导出 CSV 显示 ImportError : cannot import name 'CompressionOptions' from 'pandas._typing'