R - select 仅影响数据框的列
R - select only factor columns of dataframe
我正在尝试 select 仅对我的数据框中的列进行因子分解。示例如下:
bank[,apply(bank[,names(bank)!="id"], is.factor)]
但是代码的行为很奇怪。一步一步:
sapply(bank[,names(bank)!="id"], is.factor)
我得到:
age sex region income married children car
FALSE TRUE TRUE FALSE TRUE FALSE TRUE
save_act current_act mortgage pep ageBin
TRUE TRUE TRUE TRUE TRUE
看起来不错。现在,我假设我只是将这个 TRUE/FALSE 的矩阵传递给下一步并只获取我需要的列:
bank[,sapply(bank[,names(bank)!="id"], is.factor)]
但结果我得到了所有与原始银行数据框中相同的列。什么都没有被过滤掉。我以一种或另一种方式尝试过,但找不到解决方案。对我做错了什么有什么建议吗?
#DATA
df = mtcars
colnames(df) = gsub("mpg","id",colnames(df))
df$am = as.factor(df$am)
df$gear = as.factor(df$gear)
df$id = as.factor(df$id)
#Filter out 'id' after selecting factors
df[,sapply(df, is.factor) & colnames(df) != "id"]
df = mtcars
colnames(df) = gsub("mpg","id",colnames(df))
df$am = as.factor(df$am)
df$gear = as.factor(df$gear)
df$id = as.factor(df$id)
library(dplyr)
df %>% select_if(is.factor) %>% select(-id)
我正在尝试 select 仅对我的数据框中的列进行因子分解。示例如下:
bank[,apply(bank[,names(bank)!="id"], is.factor)]
但是代码的行为很奇怪。一步一步:
sapply(bank[,names(bank)!="id"], is.factor)
我得到:
age sex region income married children car
FALSE TRUE TRUE FALSE TRUE FALSE TRUE
save_act current_act mortgage pep ageBin
TRUE TRUE TRUE TRUE TRUE
看起来不错。现在,我假设我只是将这个 TRUE/FALSE 的矩阵传递给下一步并只获取我需要的列:
bank[,sapply(bank[,names(bank)!="id"], is.factor)]
但结果我得到了所有与原始银行数据框中相同的列。什么都没有被过滤掉。我以一种或另一种方式尝试过,但找不到解决方案。对我做错了什么有什么建议吗?
#DATA
df = mtcars
colnames(df) = gsub("mpg","id",colnames(df))
df$am = as.factor(df$am)
df$gear = as.factor(df$gear)
df$id = as.factor(df$id)
#Filter out 'id' after selecting factors
df[,sapply(df, is.factor) & colnames(df) != "id"]
df = mtcars
colnames(df) = gsub("mpg","id",colnames(df))
df$am = as.factor(df$am)
df$gear = as.factor(df$gear)
df$id = as.factor(df$id)
library(dplyr)
df %>% select_if(is.factor) %>% select(-id)