Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

594
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!