read.csv 列的零和一为逻辑

标签 r csv read.csv

如何将一列一和零作为逻辑直接读入,从而避免后续转换?

在一个大的 csv 文件中,有几列的值为零或一,我想将其用作 R 中的逻辑变量。

如果我将这些 colClasses 指定为逻辑,则 read.csv 会提示 expected 'a logical', got '0':

Error in scan(file, what, nmax, sep, 
dec, quote, skip, nlines, na.strings,  : 
scan() expected 'a logical', got '0'

另一方面,如果我将那些 colClasses 指定为整数,则 read.csv 会成功。之后,我可以使用 as.logical() 转换它们。

最佳答案

tl;dr 不,据我所知不可能。

我不知道您为什么在转换后不满意,但您可以编写一个包装器:假设您实际上从来不想阅读包含 T/F 的列/TRUE/FALSE 值:

read.csv2 <- function(file,colClasses,...) {
  lcols <- which(colClasses=="logical")
  colClasses[lcols] <- "integer"
  x <- read.csv(file,colClasses=colClasses,...)
  x[lcols] <- lapply(x[lcols],as.logical)
  x
}

(未经测试!)

否则,我会为 readrdata.table::fread 或 ...

提交功能请求

据我所知,在有人提出相反的证据之前,你原来的问题的答案

How can a column of zeros and ones be read in directly as logical [using only base R functions such as read.table], thereby avoiding subsequent conversions?

"这不可能吗?";不是不合理,但不可能。您可以通过 http://bugs.r-project.org 提交功能请求,或在 r-devel@r-project.org ...

上进一步讨论

关于read.csv 列的零和一为逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33402519/

相关文章:

随机森林错误: NA not permitted in predictors (but no NAs in data)

r - metafor 提供与原始值不同的 95% CI

r - 手动计算ACF

read.csv() - 三列中的两列

r - 在 httr (R) 中使用 GET 时出现授权错误 401。

mysql - CSV 数据未插入相应的 MySQL 表中

java - 读取巨大的csv文件,将其存储为Person对象,写入多个更清洁或更小的CSV文件时出现内存问题

ruby-on-rails - 使用 rspec 测试导出到 excel 或 csv 的最佳方法是什么?

r - datatable.integer64 参数对我不起作用应该吗?

R 中的 read.csv() "no lines available in input"错误