sql query fun calc один раз для таблицы - PullRequest
0 голосов
/ 26 декабря 2018

Попытка создать функцию для возврата данных из базы данных.При использовании в таблице он работает только в первом ряду.

> library(RODBC)
> f1 <- function(p){return (paste(p, "+", sep=""))}
> f2 <- function(p){
  h <- odbcConnect("dsn")
  r <- sqlQuery(h, paste("select '", p, "' + '+'", sep=""))
  return (r[1])
}

> x <- data.frame(p = c("a", "b"))
> data.frame(x, p2 = f1(x$p))
  p p2
1 a a+
2 b b+

> data.frame(p = x$p, p2 = f2(x$p))
  p Var.2
1 a    a+
2 b    a+
Warning message:
In data.frame(p = x$p, p2 = f2(x$p)) :
  имена строк взяты из короткой переменной и поэтому сброшены
>

Пожалуйста, объясните мне, что я делаю неправильно.Спасибо

Илья

1 Ответ

0 голосов
/ 26 декабря 2018

Я думаю, мне нужно сделать что-то вроде этого:

f2 <- function(p){
  # c("a", "b") -->> "('a'), ('b'), (NULL)"
  s <- paste(<summary>_paste("('", p, "'),", sep=""), " (NULL)", sep = "")
  # ms sql
  qry <- paste("select x + '+' as p from values(", s, ")t(x) where x is not NULL", sep = "")
  odbcConnect(..)
  return(sqlQuery(h, qry))
}
...