Понять структуру списков - PullRequest
0 голосов
/ 23 октября 2018

У меня есть код R, который подключен к моей PostgresDB.

Это дает мне для каждой таблицы ровно одну строку с одним столбцом типа Boolean

res <- lapply(all_tables,
              function(table){
                sqlStatement <- 
                  paste("SELECT CASE WHEN MAX(date) = current_date-1 then TRUE else FALSE end as x from "
                        ,table)
                dbGetQuery(con, sqlStatement)
              })
names(res) <- all_tables
res

Результат несколько удовлетворительный:

datawarehouse.table1
     x
1 TRUE

datawarehouse.table2
      x
1 FALSE

datawarehouse.table3
      x
1 FALSE

Что мне действительно нужно, так это что-то вроде этого кадра данных:

table                  valid
datawarehouse.table1   TRUE
....

Что я не понимаю, так это х и те 1.

1 Ответ

0 голосов
/ 23 октября 2018

Как указано slackline, 1 - это номер строки.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * За из-за того, что вы выполнили этот оператор SQL:

SELECT CASE WHEN MAX(date) = current_date-1 then TRUE else FALSE end as x from table

Вы видите, что там as x?Это x, который вы ищете.

Вы можете превратить ваш результат, который представляет собой список данных, в один кадр данных, подобный этому:

# this is the `res` from your example, with some example data
res <- list("datawarehouse.table1" = data.frame("x" = c(TRUE)),
            "datawarehouse.table2" = data.frame("x" = c(FALSE)),
            "datawarehouse.table3" = data.frame("x" = c(TRUE)))

# the names of the list items should be the values in the new column
table_names <- list("table" = names(res))

res <- do.call(rbind, res)
# get rid of the row names, will have integer indexes instead
rownames(res) <- NULL

# add a new column with the table names
# you could use stringr::str_extract to only pull out the portion you need
res<- cbind(res, table_names)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...