我需要删除数据框中的某些行。
我的代码如下所示:
remove <- ...
dataset <- dataset[-remove,]
但是,根据上下文,我的remove
向量可能为空。
当它为空时,我的数据帧的每一行都被删除。
我怎么能修改它,在这种情况下,没有删除行?
答案 0 :(得分:1)
我建议在执行语句之前检查向量是否为空。
如果data.frame
是nrow()
,则正确的功能为NROW()
或remove
。
如果vector
是length()
,您可以选择NROW()
和if(NROW(remove)>0) dataset <- dataset[-remove,]
。
无论哪种方式,这段代码都可以解决您的问题:
nrow()
但请注意,data.frame
仅适用于NROW()
,而data.frame
适用于vector
和length()
。
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),]