0

当我尝试过滤我的数据框时,我在 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)但我收到了相同的错误消息。

当我输入过滤器命令时,我得到了弹出窗口:

(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

输出结果:

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")
4

2 回答 2

1

我们也可以这样做append

colnames(my_data) <- append(colnames(my_data)[-1], "temp")
于 2021-06-26T19:38:58.430 回答
0

由于创建名为 的列而发生错误NULL。我们可以用任何其他任意名称重命名该列,它应该可以正常工作。例如 -

colnames(my_data) <- c(colnames(my_data)[-1], 'temp')
于 2021-06-26T10:27:26.257 回答