Блестящее развертывание R - замена rowr cbind.fill - PullRequest
0 голосов
/ 09 июля 2020

Я развертываю приложение Shiny на Heroku.

Однако пакет сборки не поддерживает rowr, поскольку версия R несовместима с этим пакетом.

Как я могу заменить rowr :: cbind.fill с базовыми функциями R или dplyr?

Я попытался посмотреть, что было в функции, но мне это непонятно:

function (..., fill = NULL) 
{
    inputs <- list(...)
    inputs <- lapply(inputs, vert)
    maxlength <- max(unlist(lapply(inputs, len)))
    bufferedInputs <- lapply(inputs, buffer, length.out = maxlength, 
        fill, preserveClass = FALSE)
    return(Reduce(cbind.data.frame, bufferedInputs))
}

Другой способ задать этот вопрос - есть ли в dplyr решение следующего вопроса, мне нужно fill = NA?

cbind вектор разной длины к фрейму данных

1 Ответ

0 голосов
/ 09 июля 2020

Вот решение, позволяющее определить количество отсутствующих элементов в каждом столбце, добавить его с помощью NA s и связать вместе. Я предполагаю, что столбцы хранятся в списке:

# test data
test_data <- list(c1 = rep(1, 5),
                  c2 = rep(2, 7),
                  c3 = rep(3, 4))

# find the longest column
longest_column <- max(unlist(lapply(test_data, length)))

# calculate how many NAs need to be added
number_append <- lapply(test_data, function(x) longest_column - length(x))

# append the columns
data_appended <- lapply(seq_len(length(test_data)), function(i) {
  c(test_data[[i]], rep(NA, number_append[[i]]))
})

# combine the columns
data_combined <- do.call("cbind", data_appended)

...