r - 如何检查我是否已通过 NA 而不是数据框?
问题描述
我有一个接受值的例程。这个值必须是数据框或 NA,但用户可以传递几乎任何东西,我想检查一下。
问题是,如果我对传递的值执行 is.na(),我会得到 TRUE 或 FALSE,但如果传递的值是 data.frame,我会得到一个矩阵。我想要一个 TRUE 或 FALSE(在这种情况下为假,因为数据框不是 NA)。我该怎么做?
解决方案
@r2evans 的解决方案确实有效,但在您需要单个逻辑值identical()
时is()
可能很有用。
该示例使用identical
andis
来测试您的要求,并且应该TRUE
仅针对单个NA
或 adata.frame
以及FALSE
所有其他输入返回。
# test function where "|" is OK since both return single values
test <- function(x) is(x, "data.frame") | identical(x, NA))
# test cases
a <- list(
data.frame(1:3, 4:6), # data.frame
data.frame(), # empty data.frame
NA, # single NA
c(NA, NA, NA), # vector of NAs
c(NA, 1.23, NA), # vector with an NA
NULL, # single NULL
list(1:3, 4:6), # list that's almost a data.frame
1L:3L, # vector of integers
LETTERS[1:5]) # vector of characters
# test
sapply(a, test)
> [1] TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
只有前三个元素返回TRUE
。
推荐阅读
- react-native - 错误的 componentWillUpdate 警告
- firebase - 如何使用 Flutter 处理简单的应用内订阅?
- html - 在具有复杂对象输入的循环中多次重用 Angular 组件
- python - 如何将txt文件中具有相同键、不同值的多个字典导出到csv
- c - C - 字符到 ASCII:'a' 打印为 6
- php - WooCommerce Cart REST Api 无法将购物车与特定用户相关联
- java - 我的代码或我使用的 API 有问题吗?
- python - CNN 上的时尚 MNIST 数据集
- python - shared_xaxis with plotly,但我仍然可以在每个图上显示轴吗?
- python - 如何使用字典计算列表中单词的出现次数