如果dataframe为空,如何编写if/else语句

Ker*_*Lee 7 r

在R中编码的新手,需要一些帮助

我想说:如果数据框中没有任何内容打印no_match如果有什么东西将它绑定到df2的ID

if(df == []){
print("nomatch")
}else{
cbind(df, df2$id2)
}
Run Code Online (Sandbox Code Playgroud)

Kon*_*rad 10

您可以通过以下方式获取有关数据框尺寸的信息dim.例如运行代码:

data(mtcars)
dim(mtcars)
Run Code Online (Sandbox Code Playgroud)

会告诉你尺寸:

[1] 32 11
Run Code Online (Sandbox Code Playgroud)

对于NULL您将获得的对象:

mtcars <- NULL
dim(mtcars)
NULL
Run Code Online (Sandbox Code Playgroud)

dimdata.frame没有行的情况下非常灵活:

mtcars <- mtcars[-c(1:dim(mtcars)[1]),]
Run Code Online (Sandbox Code Playgroud)

你会得到

> dim(mtcars)
[1]  0 11
Run Code Online (Sandbox Code Playgroud)

IF声明

构造if语句非常简单,取决于您想要检查的内容

对象是 NULL

*对象是NULL,没有行,没有列.

if (dim(df) == NULL) {
}
Run Code Online (Sandbox Code Playgroud)

没有行

此数据框具有列但没有观察.

if (dim(df)[1] == 0) {

}
Run Code Online (Sandbox Code Playgroud)

没有专栏

*该对象仍然是类,data.frame但没有数据.

if (dim(df)[2] == 0) {

}
Run Code Online (Sandbox Code Playgroud)

您可以像这样构建对象(如果感兴趣的话):

data(mtcars)
mtcars <- mtcars[,-c(1:dim(mtcars)[2])]
Run Code Online (Sandbox Code Playgroud)

当然,您可以组合条件来检查两个或一个数据帧为空的事件.


cde*_*man 5

这取决于你data.frame实际上是空的还是你认为空的所有元素.

如果data.frame是空的,您可以使用nrow简单的检查.

tmp <- data.frame(A = numeric())
nrow(tmp)
[1] 0

if(nrow(tmp) == 0){
    print("data.frame is empty")
}else{
    print("data.frame contains data")
}
Run Code Online (Sandbox Code Playgroud)

编辑 - OP询问对象是否存在

您可以检查是否已定义对象 exists

exists("tmp2")
[1] FALSE
exists("tmp")
[1] TRUE
Run Code Online (Sandbox Code Playgroud)