我注意到在我的R脚本中有时会出现错误,当我忘记检查我正在处理的数据框是否为空(没有任何行)时会发生这种情况。例如,当我像这样使用apply时:
apply(X=DF,MARGIN=1,FUN=function(row) !any(vec[ row[["start"]]:row[["end"]] ]))
如果DF恰好是空的,我会收到关于下标的错误。为什么会这样?空数据框不是有效的吗?当数据框中没有行时,为什么带有MARGIN=1的apply()会尝试执行任何操作?我真的需要在每个这样的apply之前添加一个条件来确保数据框不为空吗?
谢谢!
apply(X=DF,MARGIN=1,FUN=function(row) !any(vec[ row[["start"]]:row[["end"]] ]))
如果DF恰好是空的,我会收到关于下标的错误。为什么会这样?空数据框不是有效的吗?当数据框中没有行时,为什么带有MARGIN=1的apply()会尝试执行任何操作?我真的需要在每个这样的apply之前添加一个条件来确保数据框不为空吗?
谢谢!
plyr
混淆了? - mbqdata.frame
时,您希望什么样的结果?列表?NULL
?NA
?FALSE
?也许您可以在代码中早些时候消除空的data.frame
? - Marekapply()
和MARGIN=1
时,它是如何工作的?我认为它会将每一行发送到FUN
并聚合结果。 - David B