奇怪的行为从R中的data.frame中删除列

Ser*_*gey 1 r dataframe

从data.frame中删除列时遇到了一个奇怪的行为.最初我有:

> a <- data.frame("a" = c(1,2,3), "abc" = c(3,2,1)); print(a)
  a abc
1 1   3
2 2   2
3 3   1
Run Code Online (Sandbox Code Playgroud)

现在,我a$a从data.frame中删除

> a$a <- NULL; print(a)
  abc
1   3
2   2
3   1
Run Code Online (Sandbox Code Playgroud)

正如所料,abc我的data.frame中只有列.但是当我尝试引用已删除的列时,奇怪的部分开始了a.

> print(a$a)
[1] 3 2 1
> print(is.null(a$a))
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

它看起来像R返回的值a$abc而不是NULL.

当剩余列名称的开头与已删除列的名称完全匹配时,会发生这种情况.

这是一个错误还是我错过了什么?

Luc*_*zer 8

从帮助.?$

name:文字字符串或名称(可能是引号引用).对于提取,这通常(参见"环境"下)部分匹配对象的名称.

这是正常行为,因为名称部分匹配.有关部分匹配的详细信息,请参阅?pmatch.

干杯