dat <- data.frame(a = 1:2, b = 2:3, c = 4:5)
if (!is.null(dat$d)) {
print("d exists")
} else {
print("d does not exist")
}
if (!is.null(dat$a)) {
print("a exists")
} else {
print("a does not exist")
}
dat <- data.frame(
a = c(1,2),
b = c(1,2),
c = c(1,3)
)
exists("a", where = dat) # TRUE
exists("b", where = dat) # TRUE
exists("c", where = dat) # TRUE
exists("d", where = dat) # FALSE
# Does not work with multiple entries though
exists(c("a","b","c","d"), where = dat)
6条答案
按热度按时间ig9co6j11#
假设数据框的名称为
dat
,要检查的列名为"d"
,则可以使用%in%
运算符:xqnpmsa82#
您有许多选项,包括使用
%in%
和grepl
:要获取列的名称,请执行以下操作:
使用
%in%
检查成员资格:nc1teljy3#
可以使用
any
:vshtjzan4#
您还可以使用
if(!is.null(abcframe$d))
来测试d
是否存在于abcframe
中。oxcyiej75#
一个tidyverse方法可能对一些人来说更易读,因此更好地记住。
你可以通过
str_detect
搜索变量,它返回一个像grepl
这样的逻辑向量,然后通过基R函数any
折叠它,如果至少有一个TRUE值,它返回TRUE。xv8emn3q6#
如果您想专门检查一列,一种非常规的方法是使用
exists
。虽然
exists
主要用于检查环境中的变量,但它也可以用于 Dataframe 和列表,因为它们可以存储命名对象。