如何提取多类对象的单一类别?以wind的data.frame/data.table类为例
解决data.table/data.frame双类别对象的使用与类别设置问题
直接使用无需额外转换
data.table本身就是data.frame的子类,你的wind对象可以直接当作data.table或data.frame来用:- 用data.table专属语法(比如
wind[, .(col1, col2)])会自动触发data.table的行为 - 用data.frame的常规操作(比如
wind$col1、subset(wind, ...))也完全兼容
- 用data.table专属语法(比如
强制转换为单一类别
如果你需要把对象严格转换成其中一种类型:- 转成纯data.frame:
wind_df <- as.data.frame(wind),此时class(wind_df)会只返回"data.frame" - 转成纯data.table:
wind_dt <- as.data.table(wind),此时class(wind_dt)会只返回"data.table"
- 转成纯data.frame:
修改原对象的类别(不推荐,可能破坏特性)
要是你想直接修改原对象的类列表而非创建新对象:- 只保留data.table类:
class(wind) <- "data.table" - 只保留data.frame类:
class(wind) <- "data.frame"
注意:直接修改类别可能导致data.table的特性失效,除非你明确知道自己在做什么
- 只保留data.table类:
关于
class(wind)[1]无输出的问题class(wind)[1]只是获取类列表的第一个元素(字符串),本身不会修改对象。如果执行后没看到输出,可能是你在脚本里执行没加print()——比如在R脚本里要写print(class(wind)[1])才会显示结果;在R控制台直接输入class(wind)[1]应该会直接返回字符串。
内容的提问来源于stack exchange,提问作者yessir22
相关产品推荐
相关产品推荐

