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

时间:2018-03-28 17:57:51

标签: r dataframe

我是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

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

2 个答案:

答案 0 :(得分:1)

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

给出错误消息:strsplit(as.character(rawdata_r$File),"_")已生成包含1,4,5和2个嵌套元素的列表。这表明rawdata_r$File是一个因素,您将转换为角色。字符向量的长度为4,元素有0,3,4和1&#34; _&#34;分别在他们身上。也许这些是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"

答案 1 :(得分:0)

如果来自File数据框的OP列获得了由_分隔的每一行的固定数量的项目(例如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