从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.
当剩余列名称的开头与已删除列的名称完全匹配时,会发生这种情况.
这是一个错误还是我错过了什么?
从帮助.?$
name:文字字符串或名称(可能是引号引用).对于提取,这通常(参见"环境"下)部分匹配对象的名称.
这是正常行为,因为名称部分匹配.有关部分匹配的详细信息,请参阅?pmatch.
干杯