【问题标题】:data.frame - object cannot be coerced to type 'double'data.frame - 对象不能被强制输入'double'
【发布时间】:2020-01-04 10:12:16
【问题描述】:

我有这个功能:

coeff_var <- function(data_stand) {

  percvar <- (sd(data_stand)/mean(data_stand)*100)
  return(percvar)
}


and I want to calculate multiple columns at a time. I have tried:
lapply(data_stand, coeff_var(data_stand))  
apply(data_stand,2, coeff_var(data_stand))
summarise(data, data_coeff_var = coeff_var(data_stand))

我也尝试先取消列出该对象:

as.numeric(unlist(data_stand))

我收到以下错误:

is.data.frame(x) 中的错误: (list) 对象不能被强制输入'double'

data_stand 看起来像这样

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    假设你有除第一列之外的所有数字列,你可以lapplylike

    data_stand[-1] <- lapply(data_stand[-1], coeff_var)
    

    dplyr

    library(dplyr)
    data_stand %>% mutate_if(is.numeric, coeff_var)
    

    【讨论】:

      【解决方案2】:

      基础 R 解决方案:

      lapply(data_stand[,sapply(data_stand, is.numeric)], coeff_var)
      

      【讨论】:

        【解决方案3】:

        data.table

        library(data.table)
        setDT(data_stand)[, lapply(.SD, function(x)
                    if(is.numeric(x)) coeff_var(x) else NULL)]
        

        【讨论】:

          猜你喜欢
          • 2017-08-29
          • 2012-01-17
          • 2023-03-26
          • 2016-05-22
          • 1970-01-01
          • 1970-01-01
          • 2017-11-01
          • 2016-09-30
          • 1970-01-01
          相关资源
          最近更新 更多