r - 区分空列表或空数据框
问题描述
我正在使用一个似乎返回格式错误数据的 API。API 应该返回嵌套的数据帧,但有时也返回空列表:
column_name
<list>
<data.frame [1 × 5]>
<data.frame [0 × 0]>
<data.frame [0 × 0]>
<list [0]>
...
在这一步之后,我想使用unnest
下游嵌套数据帧中的数据。但是,空列表阻止了这种情况的发生。我想做的是:
- (1) 测试该行条目是否为空列表
- (2) 如果是,则转换为空数据框;如果没有,请保持原样
但是,我测试空列表的首选方法有点平淡,因为数据框就是一个列表。目前我正在考虑使用identical
或all.equal
结合dim
进行测试。即如果条目的维度是[1,1],则将该条目替换为空数据框。
(我想知道在我有一个维度为 [1,1] 但实际上也有数据的情况下会发生什么......)
这是最 R 的方式吗?我已经从其他地方的 API 中看到了这种行为,所以我需要在多个地方使用这个功能。
注意我正在使用 tidyverse,如果这会影响答案。
解决方案
数据框是特殊list
的,但类是dataframe
. 您可以通过这种方式测试课程:
class(data.frame()) == "list"
> FALSE
class(list()) == "list"
> TRUE
推荐阅读
- java - 将java转换为Json时是否可以忽略内部类名和变量
- c# - 如何使用c#检查日期时间是否为空
- angular - 重新加载页面将我带到角度 cli 中的根路径
- c++ - 您如何转发声明存在于命名空间中的类?
- android - Android 在 aws s3 http 上上传
- django - Django ValueError 'accounts.user',但未安装应用程序'accounts'
- sql-server - 根据 SQL Server 中的其他列值推断一列的值
- jpa - 创建后未管理 JPA @Entity?
- amazon-web-services - 将 aws-java-sdk 依赖项添加到 Grails 项目,失败并出现 create-process:error=206
- swift - 出现错误,但即使打开包装我也没有图像输出,第一次使用 Kingfisher