如何按数据类型从data.frame中删除列?

如何按数据类型从data.frame中删除列?,r,R,我有一个data.frame,有将近200个变量列和不同类型的数据num、int、logi和factor。现在,我想删除类型因子的所有变量以运行函数cor 当我使用str函数时,我可以看到哪些变量是factor类型的,但我不知道如何选择和删除所有这些变量,因为逐个删除是非常耗时的。为了选择这些变量,我尝试了attr和typeof,但没有结果 某些方向?假设使用通用data.frame,这将删除类型为factor的列 编辑 根据@Roland的建议,你也可以保留那些不属于你的因素。随便你喜欢哪个

我有一个data.frame,有将近200个变量列和不同类型的数据num、int、logi和factor。现在,我想删除类型因子的所有变量以运行函数cor

当我使用str函数时,我可以看到哪些变量是factor类型的,但我不知道如何选择和删除所有这些变量,因为逐个删除是非常耗时的。为了选择这些变量,我尝试了attr和typeof,但没有结果

某些方向?

假设使用通用data.frame,这将删除类型为factor的列

编辑

根据@Roland的建议,你也可以保留那些不属于你的因素。随便你喜欢哪个

df[, sapply(df, class) != "factor"]
编辑2

当您关注cor函数时,@Ista还指出,在特定情况下,使用is.numeric进行过滤会更安全。以上仅用于删除因子类型

下面是一个非常有用的tidyverse解决方案,改编自:

联吡啶酯 > >附加包装:“lubridate” >以下对象已从“package:base”屏蔽: > >日期 图书馆管理员 创建具有多个变量类型的虚拟数据集 df% 变异 var_fct=作为系数var_fct, var_date=as_date var_date 选择数值变量 df%>%选择\u如果是数字 >一个tibble:5x2 >变量数量1变量数量2 > > 1 1 10 > 2 2 20 > 3 3 30 > 4 4 40 > 5 5 50 选择字符变量 df%>%选择字符 >一个tibble:5x1 >瓦鲁查尔 > >1这个 >2是 >3假人 >4个字符 >5文本 选择因子变量 df%>%选择系数 >一个tibble:5x1 >var_fct > >1这个 >2是 >3假人 >4因素 >5文本 选择日期变量 df%>%选择日期 >一个tibble:5x1 >var_日期 > > 1 2019-12-18 > 2 2019-12-19 > 3 2019-12-20 > 4 2019-12-21 > 5 2019-12-22 使用否定选择变量注意`~` df%>%选择_if~!是数字。 >一个tibble:5x3 >变量字符变量fct变量日期 > >2018年12月1日 >2是2019-12-19 >3假人2019-12-20 >4字符系数2019-12-21 >5文本2019-12-22
2019年12月18日由v0.3.0创建的df[,sapplydf,class!=factor]@Roland,谢谢,我似乎总是消极地认为:df[,sapplydf,is.numeric]更短、更安全,如果有字符列也能工作。感谢你们所有人:这段代码对于解决我的问题非常有用df[,sapplydf,is.numeric]整洁。但当列有多个类(例如POSIXlt POSIXt或hms difftime)时,似乎不起作用。。。
df[, sapply(df, class) != "factor"]
df[,sapply(df, is.numeric)]