База данных в R?

Привет, я имею проблемы со вставлением новых реестров по отношению к Базе данных.

Я использую книжный магазин RODBC чтобы присоединяться в базу данных с R, до там все добро, но когда захотел добавить реестр, что у меня есть хранение в дате frame как:

datos<- data.frame(nombre="juan",edad=22)
sqlSave(canal,tablename="alumnos",datos,append=TRUE)

У меня выходит ошибка: что я могу делать? у них какая-то подсказка есть? Я жду Ваш ответ. Большое спасибо.

Обновление:

Мой код простой:

library(RODBC) 
canal <- odbcConnect("PrMYSQL",uid = "root") 
datos<-data.frame(nombre='alberto', edad=31,sexo= 'masculino') 
guardar<- sqlQuery(canal,"INSERT INTO alumnos (nombre,edad,sexo) VALUES (",paste(datos[1,]),")")

Выполнив у меня выходит следующая ошибка:

Error in if (errors) return(odbcGetErrMsg(channel)) else
return(invisible(stat)) : argument is not interpretable as logical

Я надеюсь, что они могут помогать мне спасибо

7
задан 17.12.2015, 00:18
2 ответа

Я вижу, что ты изменил твои данные, этот serГ - в правильный формат:

canal <- odbcConnect("PrMYSQL",uid = "root") 
datos<-data.frame(codigo=1, nombre='alberto', edad=31,sexo= 'masculino') 
guardar<-sqlQuery(canal, paste0("INSERT INTO alumnos (codigo,nombre,edad,sexo) VALUES ( '",datos$codigo,"', '",datos$nombre,"', '",datos$edad,"', '",datos$sexo,"' )" ) ) 

эта ошибка:

Error in if (errors) return(odbcGetErrMsg(channel)) else
return(invisible(stat)) : argument is not interpretable as logical

производится главным образом из-за неправильного использования paste или paste0

2
ответ дан 24.11.2019, 15:06

Я согласовываю с Elenasys во что ошибку эта в paste (), но возможно использовать строку для консультации. Однако у тебя есть две проблемы, извлекли data.frame, созданного из-за as.data.frame, производятся факторы и эти превращаются в число, использовав паситесь, с другой стороны - проблема приложения колонн. Со следующим примером:

datos<-data.frame(nombre='alberto', edad=31,sexo= 'masculino')

Ты можешь прилагать твою цепь с do.call ()

 do.call(paste, c(datos,sep=","))
 [1] "alberto\",\"31\",\"masculino"

Первые и последние кавычки не считают, потому что это часть вывода R и только считают тех, которые предшествовались из-за \

Оставаясь тогда как:

canal <- odbcConnect("PrMYSQL",uid = "root") 
datos<-data.frame(codigo=1, nombre='alberto', edad=31,
                  sexo= 'masculino') 
guardar<-sqlQuery(canal, paste0('INSERT INTO alumnos
                  (codigo,nombre,edad,sexo) VALUES 
                  ("', do.call(paste, c(datos[1,],sep='","')),'")')

Я надеюсь, что это может подавать тебя.

1
ответ дан 24.11.2019, 15:06