gpt4 book ai didi

read.table 意外地将 "T"解释为 TRUE

转载 作者:行者123 更新时间:2023-12-04 18:08:51 26 4
gpt4 key购买 nike

我发现了一个问题,R 似乎解释了 "T"TRUE即使使用一切手段避免这样做(至少根据这个 post )。

示例数据(另存为“test.txt”):

col1    col2
1 T
2 T
3 T
4 T
5 T
6 T
7 T
8 T
9 T

示例代码:
read.table("test.txt", as.is=TRUE, header=TRUE, 
stringsAsFactors=FALSE, colClasses=c(character()))

产生:
  col1 col2
1 1 TRUE
2 2 TRUE
3 3 TRUE
4 4 TRUE
5 5 TRUE
6 6 TRUE
7 7 TRUE
8 8 TRUE
9 9 TRUE

我发现的唯一非理想解决方案是设置 header=FALSE:
read.table("test.txt", as.is=TRUE, header=FALSE, 
stringsAsFactors=FALSE,
colClasses=c(character()))


V1 V2
1 col1 col2
2 1 T
3 2 T
4 3 T
5 4 T
6 5 T
7 6 T
8 7 T
9 8 T
10 9 T

我意识到这可能看起来有些人为,但这种极端情况是真实的,因为人类基因实际上是命名的 "T" (!) 值在 col1是该基因内的位置。

在此先感谢您的帮助

最佳答案

是什么让您认为这是“意外”?

R 为您猜测(这通常很有帮助),但如果您更了解,请使用 colClasses=...告诉R的论据。

R> res <- read.table(textConnection("col1 col2\n1 T\n2 T\n3 T"), 
+ header=TRUE, colClasses=c("numeric", "character"))
R> res
col1 col2
1 1 T
2 2 T
3 3 T
R> sapply(res, class)
col1 col2
"numeric" "character"
R>

你的帖子格式有点奇怪,所以一开始我没有看到你确实指定了 colClasses .尽管有回收规则,我总是建议提供一个载体
条目数与列数一样多。

关于read.table 意外地将 "T"解释为 TRUE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19644318/

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