我发现我可以通过使用方括号函数进行子集化并使用-0作为行索引来删除R数据帧的所有行。但是,我还没有找到任何文件说这是一种官方行为,我可以指望将来在那里。这是一个官方功能,我可以放心地使用它,以期在将来的版本中继续以这种方式运行吗?
> df <- data.frame(c1=c(1,2,3),c2=c(2,3,4), c3=c(4,5,6))
> df
c1 c2 c3
1 1 2 4
2 2 3 5
3 3 4 6
> df[-0,]
[1] c1 c2 c3
<0 rows> (or 0-length row.names)
答案 0 :(得分:3)
让我们查看文档。
help("[.data.frame")
说(强调我的):
当[和[[用于两个指数(x [i,j]和x [[i,j]])时 就像索引矩阵一样[...]。请注意,对于每个选定的列, xj说,通常(如果它不是矩阵),结果列 将是xj [i],因此依赖于相应的[方法,请参阅 示例部分。
下一站是help("[")
,它没有说明使用0作为索引,但指向“R语言定义”手册。
There我们读过(强调我的):
一个特殊情况是零索引,它具有空效果: x [0]是一个 空载体,否则在正面或者正面包含零 负指数与省略它们的效果相同。
总结:
由于记录了此行为,您可以依赖DF[0,]
返回带有空列向量的data.frame。