【问题标题】:Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, : Arguments imply different number of rows: 1, 4, 5, 2(function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, : 参数暗示不同的行数:1, 4, 5, 2
【发布时间】:2018-03-28 17:57:51
【问题描述】:

我是 R 的初学者。我希望你能帮助我解决我的问题。 我的数据集中有包含大量信息的文件名。我必须提取这些信息来创建单独的变量。

首先我使用

splits <- t(as.data.frame(strsplit(as.character(rawdata_r$File),"_")))

但是当我使用它时,我得到了这个错误:

Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, : Arguments imply different number of rows: 1, 4, 5, 2

可能是什么问题?提前感谢您的帮助。

【问题讨论】:

  • 欢迎堆栈溢出!您可以用您的说明编辑您的问题。这是为您的答案提供新信息的最佳方式。
  • rawdata_r$File 是什么?具体来说,class(rawdata_r$File)length(rawdata_r$File)的输出是什么?
  • 它是数据集的列,带有数据文件的名称。姓名中有一些信息(如日期、人员编号等)。这是一个包含超过 23000 个条目的大文件。 class(rawdata_r$File) 说“因素”。
  • @RenaSo 你认为所有rows 有相同数量的rawdata_r$File 项目,它们由_ 分隔吗?可能是它的工作共享至少 1 行 rawdata_r$File 的数据。

标签: r dataframe


【解决方案1】:

as.data.frame() 函数引发了您的错误。 R 中的数据框必须具有具有相同行数的列。

鉴于错误消息:strsplit(as.character(rawdata_r$File),"_") 生成了一个包含 1、4、5 和 2 个嵌套元素的列表。这表明 rawdata_r$File 是一个因素,您正在转换为字符。字符向量的长度为4,元素中分别有0、3、4、1个“_”。也许这些是snake_case中的词

根据您要使用此对象的目的,我建议您删除对data.frame 的调用和对t 的调用。如果您想将使用snake_case 命名约定的文件名转换为它们的单词

看下面的例子:

# create an object with similar characteristics
filenames <- factor(c("foo", "foo_bar_baz_fiz", "foo_bar_baz_fiz_buz", "hello_world"))

# generate the error:
splits <- t(as.data.frame(strsplit(as.character(filenames),"_")))

错误(函数(...,row.names = NULL,check.rows = FALSE,check.names = TRUE,: 参数意味着不同的行数:1、4、5、2

# don't generate the error
splits <- strsplit(as.character(filenames), "_")
splits
[[1]]
[1] "foo"

[[2]]
[1] "foo" "bar" "baz" "fiz"

[[3]]
[1] "foo" "bar" "baz" "fiz" "buz"

[[4]]
[1] "hello" "world"

【讨论】:

    【解决方案2】:

    如果OP 数据帧中的File 列的每行有固定数量的项目(比如4),每行由_ 分隔,那么可以使用以下方法找到一个有效的解决方案 tidyr::separate

    图书馆(tidyverse)

    rawdata_r %>%
      mutate(File = as.character(File)) %>%
      separate(File, c("Part1", "Part2", "Part3", "Part4"), sep = "_")
    

    上述语句将File数据划分为4列,名称为Part1, Part2, Part3, Part4

    【讨论】:

      猜你喜欢
      • 2021-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-16
      • 1970-01-01
      相关资源
      最近更新 更多