获取类字符/整数或我定义的任何类型的列索引?

时间:2019-02-25 15:11:41

标签: r dataframe

给定一个数据框,我想获取整数类型的列的列索引(1、4、55、33 ..)。

给出df:

col1           col2
<character>    <integer>
a              1 
a              2  
vb             3

我想将col1作为字符列。

我正在尝试使用:

which(sapply(df, function(x) class(x) == "character") == TRUE)

请告知。

2 个答案:

答案 0 :(得分:2)

您可以尝试:

which(sapply(df, function(x) is.numeric(x)))

col2 
   2 

which(sapply(df, function(x) is.character(x)))

col1 
   1

或者就像@David Arenburg建议的那样:

which(sapply(df, is.character))

col1 
   1 

样本数据:

df <- read.table(text = "col1           col2
 a              1 
a              2  
vb             3", header = TRUE, stringsAsFactors = FALSE)

答案 1 :(得分:1)

我们还可以使用match。答案的第二部分是使事情变得过于复杂。

纯粹的基数R:

 match(names(Filter(is.numeric,df)),names(df))#speed limitations
 #[1] 2

使用软件包:

library(dplyr)
    df1<-df %>% 
      purrr::select_if(is.numeric)

     match(names(df1),names(df))
    #[1] 2

数据:

df <- read.table(text = "col1           col2
 a              1 
a              2  
vb             3", header = TRUE, stringsAsFactors = FALSE)