Ошибка чтения RODBC, в которой столбец excel содержит ведущие NA

Я читал листы Excel в R используя пакет RODBC , и попал в проблему с драйвером ODBC Excel. Столбцы, содержащие (достаточные) ведущие НС, приводятся к логическим.

В Excel данные отображаются следующим образом:

 period n n.ft n.pt 1/02/1985 0.008 NA 0.025 1/03/1985 -0.003 NA -0.024 1/04/1985 0.002 NA 0.015 1/05/1985 0.006 NA 0.012 1/06/1985 0.001 NA 0.003 1/07/1985 0.005 NA 0.010 1/08/1985 0.006 NA 0.001 1/09/1985 0.007 NA 0.013 1/10/1985 -0.002 NA 0.009 1/11/1985 0.013 NA 0.019 1/12/1985 -0.004 NA -0.021 1/01/1986 0.008 NA 0.009 1/02/1986 0.002 NA 0.009 1/03/1986 0.002 -0.003 1.000 1/04/1986 0.010 -0.003 0.041 1/05/1986 0.000 -0.001 -0.004 1/06/1986 0.005 0.003 0.005 1/07/1986 -0.003 0.005 0.012 1/08/1986 -0.001 -0.003 -0.021 1/09/1986 0.003 -0.001 0.012 1/10/1986 0.003 0.003 0.010 1/11/1986 -0.003 0.003 -0.003 1/12/1986 0.003 -0.003 0.022 1/01/1987 0.001 0.013 -0.004 1/02/1987 0.004 -0.004 0.011 1/03/1987 0.004 0.008 0.005 1/04/1987 0.000 0.002 -0.002 1/05/1987 0.001 0.002 0.006 1/06/1987 0.004 0.010 0.00 

Я прочитал данные:

 require(RODBC) conexcel <- odbcConnectExcel(xls.file="C:/data/example.xls") s1 <- 'SOx' dd <- sqlFetch(conexcel, s1) odbcClose(conexcel) 

Это читается во всей второй колонке как NA . Я думаю, что это связано с тем, что он догадается быть логичным, и поэтому последующие цифры оцениваются как недействительные и, следовательно, NA .

 > str(dd) 'data.frame': 29 obs. of 4 variables: $ period: POSIXct, format: "1985-02-01" "1985-03-01" ... $ n : num 0.00833 -0.00338 0.00157 0.00562 0.00117 ... $ n#ft : logi NA NA NA NA NA NA ... $ n#pt : num 0.02515 -0.02394 0.0154 0.01224 0.00301 ... 

Я пытаюсь найти способ предотвратить это принуждение до логического, что, я думаю, вызывает последующую ошибку.

Я нашел это Q + A, выполнив поиск SO, однако я нахожусь на работе и не надеюсь, что мне разрешено редактировать реестр, чтобы изменить значение по умолчанию для DWORD, как было предложено (я понимаю, что значение, заданное здесь, определяет, сколько НС требуется до Microsoft догадывается о типе данных и бомбах, которые я прочитал).

Прямо сейчас, я думаю, что лучшим решением является инвертирование данных в Excel и чтение его в R вверх-вниз.

Я люблю хороший хак, но, безусловно, есть лучшее решение?

Это не ошибка, а особенность ODBC (обратите внимание на отсутствие R), как описано здесь

http://support.microsoft.com/kb/257819/en-us

(длинная страница, проверьте «смешанный тип данных»).

Поскольку чтение файлов Excel с ODBC довольно ограничено, я предпочитаю одну из альтернатив, упомянутых Gabor, с предпочтением XLConnnect.

Давайте будем гением компьютера.