Paste0 работает в Rstudio, а не в Rscript - PullRequest
0 голосов
/ 28 января 2019

Имею строку с некоторыми переменными, которую мне нужно передать в цикл, который работает на 100% в Rstudio, но дает мне:

"cannot coerce type 'closure' to vector of type 'character'"

При работе в Rscript.

smalldata <- data.frame(V1 = c(1,2,3,4,5)

tablevar <- mondaysdata


sqljoin <- paste("select * from DBO.", tablevar, " p join DBO.TABLE2 l on (p.ID1=l.ID2) where p.ID1 =", "'", row, "'", sep = " ", collapse = ",")
for(row in smalldata$V1) {
  df1 <- as.data.table(sqlQuery(con, sqljoin))
  if (nrow(df1) == 0) {
    next
  }
  df1[,function1(.SD)]
}

Опять же, все работает на 100% в Rstudio, и это тот же самый точный код, дословно.Я вызываю методы в верхней части скрипта.Smalldata - это один столбец, 10000 строк строк идентификаторов.Tablevar - это просто имя, которое мы меняем в зависимости от дня.Например, mondaysdata, tuesdaysdata и т. Д.

1 Ответ

0 голосов
/ 28 января 2019

В этой строке

sqljoin <- paste("select * from DBO.", tablevar,
                 " p join DBO.TABLE2 l on (p.ID1=l.ID2) where p.ID1 =", "'", row, "'",
                 sep = " ", collapse = ",")

вы используете row перед его определением.row - это функция, отсюда и сообщение об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...