我想从一个函数返回一个数据框,如果条件为TRUE,则返回该数据框,否则返回NA,使用
return(ifelse(condition, mydf, NA))
。然而,ifelse函数会从数据框中删除列名。为什么这些结果不同?> data.frame(1)
X1
1 1
> ifelse(TRUE, data.frame(1), NA)
[[1]]
[1] 1
dput()提供了一些额外的见解:
> dput(ifelse(TRUE, data.frame(1), 0))
list(1)
> dput(data.frame(1))
structure(list(X1 = 1), .Names = "X1", row.names = c(NA, -1L),
class = "data.frame")
mydf[] <- NA
是一个选项。 - David LeBauerif(is.na(myfn()))
的使用更改为if(sum(is.na(myfn()) >0)
?如果需要澄清,我可以发布一个单独的问题。 - David LeBauerif(all(is.na(mydf)))
吗? - Ben Bolkerif(any(is.na(mydf)))
来匹配您之前的逻辑。 - Aaron left Stack Overflow