gpt4 book ai didi

r - RODBC 的烦人 "feature"(或错误?)

转载 作者:行者123 更新时间:2023-12-04 12:11:07 24 4
gpt4 key购买 nike

RODBC 是 R 中用于将数据从数据库导入 R 的主要库。RODBC似乎有能力“猜测”列的数据类型,我觉得这特别烦人。
我上传了文件 test.xls here ,或者您可以自己创建一个 xls 文件:

  • 创建 2 列,第一列名为 col_a和名为 col_b 的第二列.
  • col_a 中输入您喜欢的任何内容, 我在此列上输入了 92 行的字母
  • 在 col_b 的第 92 行,在那里输入一个数字,我输入了“1923”而不更改数据类型(即不使用 ' )
  • 尝试使用以下脚本将 xls 文件导入 R:
  • library(RODBC)

    setwd("C:/Users/hke775/Documents/Enoch/MISC/R_problems/RODBC")
    channel <- odbcConnectExcel("test.xls",readOnly=TRUE)
    dummy.df <- sqlFetch(channel,"Sheet1")
    odbcClose(channel)

    您会在 dummy.df 中看到, col_b都是 NA , 1923在这一列不见了。
    如果您想查看 1923再次,您可以更改 col_b 的第一行到一个数字,它又回来了。
    这很烦人,因为我不喜欢手动修改数据。我需要使用其他包来进行 xls 导入,但我找不到其他包像 RODBC 一样流畅(我试过 gdataxlsReadWrite )。
    我在 sqlFetch 中遗漏了什么吗?命令,并造成麻烦?谢谢。

    最佳答案

    请不要责怪 R 或 RODBC Microsoft's bugs ...;)

    However, due to a bug in the ODBC driver, specifying the Rows to Scan (MaxScanRows) setting currently has no effect. In other words, the Excel ODBC driver (MDAC 2.1 and later) always scans the first 8 rows in the specified data source in order to determine each column's datatype.

    For additional information about the Rows to Scan bug, including a simple workaround, click the article number below to view the article in the Microsoft Knowledge Base:

    189897 XL97: Data Truncated to 255 Characters with Excel ODBC Driver



    我在 KB189897 中尝试了修复通过设置 TypeGuessRows值为 0,看看会发生什么!
    > library(RODBC)
    > channel <- odbcConnectExcel("test.xls",readOnly=TRUE)
    > tail(dummy.df <- sqlFetch(channel,"Sheet1"))
    col_a col_b
    87 c NA
    88 d NA
    89 e NA
    90 f NA
    91 g NA
    92 h 1923
    > odbcClose(channel)

    请不要投赞成票或复选标记...只需发送现金。 :)

    关于r - RODBC 的烦人 "feature"(或错误?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9062761/

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