如果删除向量为空,如何避免删除数据帧?

时间:2017-08-02 09:32:16

标签: r dataframe row

我需要删除数据框中的某些行。

我的代码如下所示:

remove <- ...  
dataset <- dataset[-remove,]

但是,根据上下文,我的remove向量可能为空。 当它为空时,我的数据帧的每一行都被删除。

我怎么能修改它,在这种情况下,没有删除行?

2 个答案:

答案 0 :(得分:1)

我建议在执行语句之前检查向量是否为空。

如果data.framenrow(),则正确的功能为NROW()remove

如果vectorlength(),您可以选择NROW()if(NROW(remove)>0) dataset <- dataset[-remove,]

无论哪种方式,这段代码都可以解决您的问题:

nrow()

但请注意,data.frame仅适用于NROW(),而data.frame适用于vectorlength()data.frame也是data.frame的有效函数,但它返回v1 <- seq(1:10) v2 <- seq(1:10) length(v1) # output = 10 NROW(v1) # output = 10 nrow(v1) # output = NULL df <- data.frame(v1,v2) NROW(df) # output = 10 nrow(df) # output = 10 length(df) # output = 2 中的列数。

虽然最后一个音符在这里可能听起来多余,但请记住,因为您可能会发现自己处于循环似乎无法正常工作的情况,这就是解决方案。

为了完整起见,请参阅下面的示例代码:

答案 1 :(得分:0)

通过一些解决方法,检查要保留哪些行(setdiff()到所有行和remove,即除了要删除的行之外的所有行:

dataset[setdiff(seq_len(nrow(dataset)), remove),]