从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
现在,我a$a
从data.frame中删除
> a$a <- NULL; print(a) abc 1 3 2 2 3 1
正如所料,abc
我的data.frame中只有列.但是当我尝试引用已删除的列时,奇怪的部分开始了a
.
> print(a$a) [1] 3 2 1 > print(is.null(a$a)) [1] FALSE
它看起来像R返回的值a$abc
而不是NULL
.
当剩余列名称的开头与已删除列的名称完全匹配时,会发生这种情况.
这是一个错误还是我错过了什么?
从帮助.?$
name:文字字符串或名称(可能是引号引用).对于提取,这通常(参见"环境"下)部分匹配对象的名称.
这是正常行为,因为名称部分匹配.有关部分匹配的详细信息,请参阅?pmatch.
干杯