gpt4 book ai didi

read.csv 列的零和一为逻辑

转载 作者:行者123 更新时间:2023-12-02 09:30:42 26 4
gpt4 key购买 nike

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

在一个大的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com