Как запросить sqldf в R, используя параметр/аргументы функции

Я пытаюсь использовать следующий код:

df_rhs<- sqldf("select rhs from df_basket12 where lhs like '%", med, "%'")

здесь med аргумент функции

med_aff1<- function(med)

приходит ошибка:

Ошибка в result_create(conn@ptr, инструкция): нераспознанный токен: "'%"


person Koushik Roy    schedule 11.07.2018    source источник


Ответы (1)


Вы можете просто вставить, чтобы объединить строки.

med <- "some text"
command <- paste0("select rhs from df_basket12 where lhs like '%", med, "%'")
df_rhs<- sqldf(command)

Приложение:

Я не уверен, что должна делать ваша функция... но вывод, хранящийся в переменной med, должен быть строкой, действительной как часть оператора SQL.

Приложение 2:

Если вы хотите перебрать несколько элементов, вам нужно будет выяснить, что делать с разными выходными данными разных запросов. Поскольку вы не указали четкого направления, я сохранил их в списке.

med <- c("a", "b") #this would be your multiple element vector

results=list()  #init an empty list

#loop through the vector

for (i in (med)) {

  command <- paste0("select rhs from df_basket12 where lhs like '%", i, "%'")
  results[i] <- sqldf(command)
}
person Prometheus    schedule 11.07.2018
comment
Спасибо, все работает нормально. Но опять же, есть еще одна проблема, если вы можете мне помочь. 'med' - это список/массив, содержащий {A,B}. Когда я использую приведенный выше запрос, он показывает правые правила {A, B}, а не {B, A}. Что я должен делать ? - person Koushik Roy; 11.07.2018
comment
@KoushikRoy Я только что обновил ответ - person Prometheus; 11.07.2018
comment
Спасибо. Но я думаю, что это приведет к совпадению лекарств А и Б вместе. Но мне нужны совпадения набора {A, B} и набора {B, A}. Я отправляю этот «мед» как API.. предположим. med=A,B Теперь на выходе я получаю все возможные результаты {A},{B},{A,B},{B,A}.. Мне нужны только правые стороны {A,B} И {Б, А} - person Koushik Roy; 11.07.2018