11
我想從函數返回一個data.frame如果爲TRUE,否則返回NA使用return(ifelse(condition, mydf, NA))
爲什麼ifelse將data.frame轉換爲列表:ifelse(TRUE,data.frame(1),0))!= data.frame(1)?
但是,ifelse會從data.frame中去除列名。
這些結果爲什麼不同?
> 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")
@Ben謝謝你的提示。我不知道'mydf [] < - NA'是一個選項。 – 2011-06-10 19:07:31
@Ben我會在後續的函數中將if(is.na(myfn()))的用法改爲if(sum(is.na(myfn())> 0)'嗎?如果你需要澄清,單獨的問題。 – 2011-06-10 19:11:58
可能只是'如果(所有(is.na(mydf)))'? – 2011-06-10 19:14:45