【问题标题】:cbind() Error in data.frame(..., check.names = FALSE) : arguments imply differing number of rows. What does it mean?cbind() data.frame(..., check.names = FALSE) 中的错误:参数暗示不同的行数。这是什么意思?
【发布时间】:2020-03-24 19:57:01
【问题描述】:

我正在尝试从多个 .csv 文件创建一个 data.frame,但是当我尝试使用 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"))
}

这个错误是什么意思?

【问题讨论】:

    标签: r


    【解决方案1】:

    如果行数不同,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)
    }
    

    【讨论】:

    • 当我尝试安装 rowr 时,控制台显示包“rowr”不可用(对于 R 版本 3.6.3),还有其他方法吗?
    • @dangelo 你可以使用github版本(或者直接复制函数或者安装)github.com/cran/rowr/blob/master/R/rowr.R
    • 我按照你说的运行了它,但是它没有绑定到相同的列,而是创建了新的列:``` [1] "codigo_municipio_ibge" "ds_municipio" [3] "ds_elemento" "vl_despesa" [5] “ds_funcao_governo” “ds_subfuncao_governo” [7] “codigo_municipio_ibge.1” “ds_municipio.1” [9] “ds_elemento.1” “vl_despesa.1” [11] “ds_funcao_governo.1” “ds_subfuncao_governo.1” `` `
    • @dangelo cbind 新建列,如果需要绑定原列,可能需要rbind
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    相关资源
    最近更新 更多