我是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
有什么问题?谢谢您提前的帮助。
您的错误是由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"
如果OP
的File
列数据框中的每行固定数量的项目(例如4(,则可以使用_
分隔,然后使用一个有效的解决方案来找到一个有效的解决方案 tidyr::separate
库(tidyverse(
rawdata_r %>%
mutate(File = as.character(File)) %>%
separate(File, c("Part1", "Part2", "Part3", "Part4"), sep = "_")
上面的语句将在4
列中划分File
名称 Part1, Part2, Part3, Part4