给定一个数据框,我想获取整数类型的列的列索引(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)
请告知。
答案 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)