开发者问题收集

(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