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

Dar*_* PC 6 r

我有一个data.frame,包含近200个变量(列)和不同类型的数据(num,int,logi,factor).现在,我想删除"factor"类型的所有变量来运行函数cor()

当我使用函数str()时,我可以看到哪些变量属于"factor"类型,但我不知道如何选择和删除所有这些变量,因为逐个删除是很费时间的.为了选择这些变量,我尝试了attr()和typeof()而没有结果.

有些方向?

cde*_*man 8

假设一般,data.frame这将删除类型的列factor

df[,-which(sapply(df, class) == "factor")]
Run Code Online (Sandbox Code Playgroud)

编辑

根据@Roland的建议,你也可以保留那些不是factor.无论你喜欢什么.

df[, sapply(df, class) != "factor"]
Run Code Online (Sandbox Code Playgroud)

编辑2

当您关注该cor函数时,@ Ista还指出在该特定实例中过滤会更安全is.numeric.以上只是删除factor类型.

df[,sapply(df, is.numeric)]
Run Code Online (Sandbox Code Playgroud)

  • `df[,sapply(df, is.numeric)]` 更短、更安全,并且在存在字符列的情况下也可以工作。 (2认同)