所以我有一个从csv导入的数据帧。我已经通过其中一个列对其进行了子集化。我在表格中找到了一些重复的条目,并试图消除它们并使用df [-c(##,##),]将它们重新分配给数据框(非常类似于this问题的答案。这里'我的代码是什么样的。
我导入文件并将其子集化:
df1 <- read.csv("file.csv",
header = T,
sep = ",",
stringsAsFactors = FALSE,
fileEncoding = "UTF-8-BOM")
> df1
semester course.name lect.num professor.gender
1 2015 Spring Bio1A 101 M
2 2014 Spring Bio1B 103 M
3 2015 Spring Bio1A 102 F
4 2015 Spring Bio1A 102 M
5 2014 Spring Bio1B 101 M
6 2014 Spring Bio1B 102 F
7 2014 Spring Bio1A 101 F
df2 <- df1[ df1$course.name == "Bio1A", ]
> df2[duplicated(df2[, c(1,3)], incomparables = FALSE) | duplicated(df2[,
c(1,3)], incomparables = FALSE, fromLast = T) ,c(1:4)]
semester course.name lect.num professor.gender
3 2015 Spring Bio1A 102 F
4 2015 Spring Bio1A 102 M
> dim(df2)
[1] 3 4
所以现在我想删除索引为1的行,所以我执行以下操作
df2 <- df2[ -c(3), ]
这在理论上应该可行,但是当检查重复时它仍然在那里,尽管改变了尺寸。
> df2[duplicated(df2[, c(1,3)], incomparables = FALSE) | duplicated(df2[,
c(1,3)], incomparables = FALSE, fromLast = T) ,c(1:4)]
semester course.name lect.num professor.gender
3 2015 Spring Bio1A 102 F
4 2015 Spring Bio1A 102 M
> dim(df2)
[1] 2 4
我无法通过调用来查看数据框,因为它实际上超过500行,但是当我使用View(df2)查看data.frame时,我仍然可以看到我认为我喜欢的行在数据框中也是如此。有没有人对可能发生的事情有解释? Rstudio中可能有Bug吗?难道我做错了什么?任何意见,将不胜感激!
还值得一提的是
df2 <- df2[ -c(3), , drop = F]
不会影响上述结果。
编辑:所以我没有意识到R在子集时不会更新行的索引。所以我认为是第3行,实际上是第2行的子集。谢谢你的帮助!