cbind () Ошибка в data.frame (..., check.names = FALSE): аргументы подразумевают различное количество строк. Что это значит? - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь создать data.frame из нескольких файлов .csv, но когда я пытаюсь связать их с помощью cbind (), я сталкиваюсь со следующей ошибкой:

Error in data.frame(..., check.names = FALSE) : 
  arguments imply differing number of rows: 10523, 8663

Это мой код :

files <- list.files(, pattern = ".csv")

library (magrittr)
library (dplyr)

temp <- read.csv(files[1], sep = ";", header = TRUE)

temp$vl_despesa <- as.character(temp$vl_despesa)
temp$vl_despesa <- gsub(pattern = ",", replacement = ".", temp$vl_despesa)
temp$vl_despesa <- as.numeric(temp$vl_despesa)

ans <- temp %>%
  select(codigo_municipio_ibge, ds_municipio, ds_elemento, vl_despesa, ds_funcao_governo, ds_subfuncao_governo) %>%
  filter(ds_funcao_governo == "EDUCAÇÃO" & ds_subfuncao_governo == "ENSINO FUNDAMENTAL")

for (i in 2:length(files)) {
  temp <- read.csv(files[i], sep = ";", header = TRUE)

  temp$vl_despesa <- as.character(temp$vl_despesa)
  temp$vl_despesa <- gsub(pattern = ",", replacement = ".", temp$vl_despesa)
  temp$vl_despesa <- as.numeric(temp$vl_despesa)

  ans <- cbind(ans, temp %>%
    select(codigo_municipio_ibge, ds_municipio, ds_elemento, vl_despesa, ds_funcao_governo, ds_subfuncao_governo) %>%
    filter(ds_funcao_governo == "EDUCAÇÃO" & ds_subfuncao_governo == "ENSINO FUNDAMENTAL"))
}

Что означает эта ошибка?

1 Ответ

0 голосов
/ 24 марта 2020

Если количество строк, отличающихся cbind, приведет к ошибке. Вместо cbind.fill из rowr

library(rowr)
library(dplyr)
for (i in 2:length(files)) {
  temp <- read.csv(files[i], sep = ";", header = TRUE)

  temp$vl_despesa <- as.character(temp$vl_despesa)
  temp$vl_despesa <- gsub(pattern = ",", replacement = ".", temp$vl_despesa)
  temp$vl_despesa <- as.numeric(temp$vl_despesa)

  ans <- cbind.fill(ans, temp %>%
    select(codigo_municipio_ibge, ds_municipio, ds_elemento, 
          vl_despesa, ds_funcao_governo, ds_subfuncao_governo) %>%
    filter(ds_funcao_governo == "EDUCAÇÃO" &
         ds_subfuncao_governo == "ENSINO FUNDAMENTAL"), fill = NA)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...