Um help na seleção

Pessoal, bom dia!

Tenho uma dúvida e gostaria de saber quem pode me ajudar:

names(df)
[1] “Country” “HDI_Rank” “HDI” “CPI” “Region”

type_columns <- NULL

for (i in 1:length(names(df))) {
type_columns[i] <- class(df[[i]])
i = i + 1
}

type_columns_num <- NULL
type_columns_ch <- NULL

for (j in 1:length(type_columns)) {
if (type_columns[j] == “character”) {
type_columns_ch[j] <- type_columns[j]
} else{
type_columns_num[j] <- type_columns[j]
}
}

eu não quero esse NA

type_columns_ch
[1] “character” NA “character” “character” “character”

eu tb não quero esse NA

type_columns_num
[1] NA “numeric”

Como devo fazer? Sorry pela dúvida de iniciante :wink:

Obrigado,

Salerno

Oi, Andre

Na parte final do seu código, você precisaria usar outros índices para atribuir valores nos vetores type_columns_xx:

i <- 1
k <- 1

for (j in 1:length(type_columns)) {
  if (type_columns[j] == "character") {
    type_columns_ch[i] <- type_columns[j]
    i = i + 1
  } else { 
    type_columns_num[k] <- type_columns[j]
    k = k + 1
  }
}

Existe no entanto um jeito mais simples de fazer essa operação.

# install.packages(purrr)
purrr::map_chr(mtcars, class)
#>       mpg       cyl      disp        hp      drat        wt      qsec        vs 
#> "numeric" "numeric" "numeric" "numeric" "numeric" "numeric" "numeric" "numeric" 
#>        am      gear      carb 
#> "numeric" "numeric" "numeric"

A saída desse código é um vetor com a classe de cada uma das colunas. A função map_chr() aplica a função class em cada coluna da base mtcars.

Created on 2020-10-06 by the reprex package (v0.3.0)

1 Curtida

Super obrigado! Vou tentar por aqui (eu não tinha visto esse erro meu dos índices :frowning:

De qualquer forma, aprendi mais uma!

Abraços,

Obrigado

1 Curtida