(TypeError):无法读取 null 的属性“substr”| 无法过滤数据框
2021-06-26
3113
当我尝试过滤我的数据框时,R 中出现了错误消息。我尝试研究该问题,但似乎没有任何内容与我的需求直接相关。
首先,我遇到了重复行名的问题,这就是我设置
row.names = NULL
的原因。
my_data <- read.csv("my_path\\my_folder\\file.csv", sep = "|", row.names = NULL)
然后,我在移动列时遇到了一些问题,因此我使用了:
colnames(my_data) <- c(colnames(my_data)[-1],NULL)
这些命令似乎为我解决了问题。但是现在我无法使用 tidyverse 库过滤我的数据。我尝试过
filter(my_data$column_1 >45)
和
filter(column_1 >45)
,但收到相同的错误消息。
当我键入 filter 命令时,出现弹出窗口:
(TypeError): Cannot read property 'substr' of null
如果我尝试执行该命令,则会收到:
Error in env_bind_lazy(private$bindings, !!!set_names(promises, names_bindings)) :
attempt to use zero-length variable name
我感觉这与
row.names = NULL
有关,但我无法找到其他方法来按顺序排列数据框,并且无法正确过滤它。任何建议都将不胜感激。
谢谢大家!
(编辑)从 csv 文件读取的示例数据:
我还发现,只有在运行
colnames(my_data) <- c(colnames(my_data)[-1],NULL)
命令后才会出现过滤问题。
my_index|GT|GQ|DP
1|" 0/1"|67|14
2|" 1/1"|52|11
1|" 0/1"|21|50
2|" 0/1"|39|10
dput 结果:
structure(list(index = 1:4, GT = c(" 0/1", " 1/1", " 0/1", " 0/1"
), GQ = c(67L, 52L, 21L, 39L), DP = c(14L, 11L, 5L, 1L)), row.names = c(NA,
4L), class = "data.frame")
2个回答
我们也可以使用
append
colnames(my_data) <- append(colnames(my_data)[-1], "temp")
来实现这一点
akrun
2021-06-26
错误是由于创建了一个名为
NULL
的列而发生的。我们可以用任何其他任意名称重命名该列,它应该可以正常工作。例如 -
colnames(my_data) <- c(colnames(my_data)[-1], 'temp')
Ronak Shah
2021-06-26