Мы храним все наши лабораторные данные в базе данных Sybase.Когда я хочу выполнить манипулирование данными и анализ, я считываю данные в R с помощью RODBC.
library(RODBC)
channellab <- odbcConnect("Labdata")
indivs <-sqlQuery(channellab,'SELECT * from CGS.Specimen')
Пока все хорошо, за исключением того, что CGS.Specimen является таблицей для всей нашей лаборатории.Есть почти 40000 образцов (строк) с 66 переменными.Чтение занимает ненужное количество времени, особенно когда меня интересуют материалы одного исследования, в котором содержится около 1000 экземпляров.Очевидный способ исправить это будет
indivs <-sqlQuery(channellab,'SELECT * from CGS.Specimen WHERE StudyCode="RP"')
Но когда я запускаю, я получаю
[1] "42S22 -143 [Sybase] [Драйвер ODBC] [Adaptive ServerAnywhere] Столбец не найден: Столбец 'RP' не найден "" [RODBC] ОШИБКА: Не удалось SQLExecDirect 'SELECT * from CGS.Specimen WHERE StudyCode = \ "RP \"' "
У меня естьиграл с кавычками, а я играл с косой чертой, но, увы, я никуда не попал.
, например,
indivs <-sqlQuery(channellab,'SELECT * from CGS.Specimen WHERE StudyCode= 'RP' ')
Ошибка: неожиданный символ в "вязи <-sqlQuery (channellab, 'SELECT * from CGS.Specimen WHERE StudyCode =' RP "</p>
indivs <-sqlQuery(channellab,"SELECT * from CGS.Specimen WHERE StudyCode= 'RP' ")
Ошибка в .Call (C_RODBCFetchRows, attr (channel, "handle_ptr"), max, buffsize,: запрещены векторы отрицательной длины
Что вы предлагаете?