Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

598
Visualizações
¿La forma más sencilla de verificar los NaN en las columnas (R)?

Soy usuario de python aprendiendo R.

Con frecuencia, necesito comprobar si las columnas de un marco de datos contienen NaN(s).

En python, simplemente puedo hacer

 import pandas as pd df = pd.DataFrame({'colA': [1, 2, None, 3], 'colB': ['A', 'B', 'C', 'D']}) df.isna().any()

dando me

 colA True colB False dtype: bool

En R estoy luchando por encontrar una solución fácil. La gente se refiere a algunos métodos de aplicación, pero eso parece demasiado complejo para una tarea tan primitiva. La solución más cercana que he encontrado es esta:

 library(tidyverse) df = data.frame(colA = c(1, 2, NA, 3), colB = c('A', 'B', 'C', 'D')) !complete.cases(t(df))

donación

 [1] TRUE FALSE

Está bien, pero no veo los nombres de las columnas. Si el marco de datos tiene 50 columnas, no sé cuál tiene NaN.

¿Hay una mejor solución R?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Puedes usar anyNA: Verifica NA en un vector

 df = data.frame(colA = c(1, 2, NA, 3), colB = c('A', 'B', 'C', 'D')) sapply(df, anyNA) colA colB TRUE FALSE

Editar

jay.sf tiene razón. Esto comprobará si hay NaN.

 df = data.frame(colA = c(1, 2, NA, 3), colB = c('A', 'B', 'C', 'D')) anyNAN <- function(x) { any(is.nan(x)) } sapply(df, anyNAN)
over 4 years ago · Santiago Trujillo Relatório

0

La mejor manera de verificar si las columnas tienen NA es aplicar un ciclo a las columnas con una función para verificar si hay any(is.na) .

 lapply(df, function(x) any(is.na(x))) $colA [1] TRUE $colB [1] FALSE

Puedo ver que cargaste el tidyverse pero no lo usaste en tu ejemplo. Si queremos hacer esto dentro del tidyverse, podemos usar purrr:

 library(purrr) df %>% map(~any(is.na(.x)))

O con dplyr:

 library(dplyr) df %>% summarise(across(everything(), ~any(is.na(.x)) colA colB 1 TRUE FALSE
over 4 years ago · Santiago Trujillo Relatório

0

La forma más fácil sería:

 df = data.frame(colA = c(1, 2, NA, 3), colB = c('A', 'B', 'C', 'D')) is.na(df)

Producción:

 colA colB [1,] FALSE FALSE [2,] FALSE FALSE [3,] TRUE FALSE [4,] FALSE FALSE

Actualice , si solo desea ver las filas que contienen NA:

 > df[rowSums(is.na(df)) > 0,] colA colB 3 NA C

Update2 , o para obtener solo ColNames con información sobre NA (gracias a RSale for anyNA ):

 > lapply(df, anyNA) $colA [1] TRUE $colB [1] FALSE
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda