首页 > 解决方案 > is.numeric() 不能与 data[,i] 一起使用,但可以与 data$variable 一起使用?

问题描述

我正在尝试编写一个循环遍历列的函数,并将根据列的数据类型执行不同的操作。它无法输入 if 语句,因为 is.numeric(data[,i]) 返回 FALSE,无论其对应的 is.numeric(data$variable) 是否返回 TRUE。我不确定解决这个问题的最佳方法。如果您能提供帮助,请告诉我。谢谢!

这是功能:

get_summary_stats <- function(data) {
  results <- list()
  for (i in names(data)) {
    var.name <- names(data[,i])
    if (is.numeric(data[,i])) {
      med.est <- median(data[,i])
      min.est <- min(data[,i])
      max.est <- max(data[,i])
      mean.est <- mean(data[,i])
      SD <- sd(data[,i])
      num.na <- sum(is.na(data[,i]))
      
      results[[i]] <- c(var.name, num.na, mean.est, SD, med.est, min.est, max.est)

    }
    if (is.factor(data[,i])){
      var.lables <- levels
      counts <-  as.data.frame(table(data[,i]))
      total <- sum(counts$Freq)
      num.na <- c("NA", nrow(data) - total)
      counts <- rbind(counts, num.na)
      counts$Percent <- (counts$Freq / total) * 100
      
      results[[i]] <- counts
    }
  }
  
  return(results)
}

这是该问题的一个示例:

> is.numeric(full_data[,"Patient Age [70: Age]"])
[1] FALSE
> is.numeric(full_data$`Patient Age [70: Age]`)
[1] TRUE

标签: rfunctionboolean

解决方案


推荐阅读