如何从r中的data.frame中删除所有行

rns*_*nso 17 r

我有一个数据框,我希望在保留原始结构(列)的同时删除所有行.

 ddf
  vint1 vint2 vfac1 vfac2
1     9    10     1     3
2     9     6     3     4
3     6     2     2     2
4    10     6     2     4
5     7    12     3     2
> 
> 
> 
> dput(ddf)
structure(list(vint1 = c(9L, 9L, 6L, 10L, 7L), vint2 = c(10L, 
6L, 2L, 6L, 12L), vfac1 = structure(c(1L, 3L, 2L, 2L, 3L), .Label = c("1", 
"2", "3"), class = "factor"), vfac2 = structure(c(2L, 3L, 1L, 
3L, 1L), .Label = c("2", "3", "4"), class = "factor")), .Names = c("vint1", 
"vint2", "vfac1", "vfac2"), class = "data.frame", row.names = c(NA, 
-5L))
Run Code Online (Sandbox Code Playgroud)

我试过了:

ddf = NA

for(i in 1:nrow(ddf) ddf[i,] = NULL
Run Code Online (Sandbox Code Playgroud)

但他们不起作用.感谢您对这个基本问题的帮助.

use*_*275 38

如果你真的想删除所有行:

> ddf <- ddf[0,]
> ddf
[1] vint1 vint2 vfac1 vfac2
<0 rows> (or 0-length row.names)    
Run Code Online (Sandbox Code Playgroud)

如果您的意思是使用占位符保持结构:

> ddf[,]=matrix(ncol=ncol(ddf), rep(NA, prod(dim(ddf))))
> ddf
  vint1 vint2 vfac1 vfac2
1    NA    NA    NA    NA
2    NA    NA    NA    NA
3    NA    NA    NA    NA
4    NA    NA    NA    NA
5    NA    NA    NA    NA 
Run Code Online (Sandbox Code Playgroud)

  • 在`c()`,`NULL`和`0`中,我将选择最容易输入的那个. (9认同)
  • 也许这比你的第二个建议更好:`ddf [which(!is.na(ddf),arr.ind = TRUE)] < - NA`.虽然你的第二个建议只是创建一种类型的"NA",但我的建议保留了原始因子水平之类的东西,并为每一列分配了正确的"NA"类型. (3认同)
  • 为什么零?我认为`ddf < - ddf [c(),]`更有意义. (2认同)
  • @GaborCsardi - 从逻辑上讲,“df[NULL,]”不是最合适的吗? (2认同)
  • 好吧,如果你知道`NULL`的索引是什么意思.与零索引类似.它们都有记录,所以它们都是很好的解决方案.但我认为`c()`更直观,你选择零行.为了确定`NULL`和零我必须检查手册.....但也许它只是我和其他人知道什么索引与'NULL`意味着. (2认同)