You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何用apply族函数获取多个dataframe每列的数据类型

R多数据表列类型批量查询实现方案

错误原因说明

你原有写法仅对列表中每个完整的data.table对象取了类属性,没有向内遍历单表的每一列执行class计算,因此只返回了表本身的类型。

正确apply族实现

最直接的写法是嵌套两层lapply,外层遍历所有待处理数据表,内层遍历单表的每一列取类型:

lapply(list(x, y), function(df) lapply(df, class))

运行后返回和输入表顺序对应的嵌套列表,每个子列表存储对应表所有列的类型结果,输出示例如下:

[[1]]
[[1]]$col_1
[1] "character"

[[1]]$col_2
[1] "integer"


[[2]]
[[2]]$col_3
[1] "integer"

[[2]]$col_4
[1] "character"

其他相关函数实现方案

你提到的Map、do.call、Reduce都可以实现需求,对应写法如下:

  • Map(本质是多参数版本的lapply,单参数场景下和lapply效果完全一致)
Map(function(df) lapply(df, class), list(x, y))
  • do.call(适合把分散的结果合并为更规整的格式,比如合并为全局命名向量)
# 先计算所有列类型,再用do.call拼接为一个向量
col_classes <- lapply(list(x,y), function(df) sapply(df, class))
do.call(c, col_classes)

输出为:

col_1     col_2     col_3     col_4 
"character" "integer" "integer" "character" 
  • Reduce(迭代累积操作,该场景下没必要强制使用,仅做可行性示例)
Reduce(function(res, df) c(res, lapply(df, class)), list(x,y), init = list())

内容的提问来源于stack exchange,提问作者Sweepy Dodo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 15:06:06