【问题标题】:In R, how can I align output of my own function like this?在 R 中,我怎样才能像这样对齐我自己的函数的输出?
【发布时间】:2021-04-17 17:59:41
【问题描述】:

enter image description here

在 R 中,我想创建一个函数,当输入是数字的 c() 时,它会显示平均值、var、min、max。 但是如何在不使用 summary() 的情况下像图片一样对齐输出?

有没有这样的打印功能?除了摘要()

【问题讨论】:

  • 有很多函数可以创建类似的输出。这应该可以工作:doBy::descStat().

标签: r function output alignment summary


【解决方案1】:

如果我们想要获取所选统计信息的摘要,请使用 lapply 循环 list 并根据 if/else 条件获取这些输出

lapply(iris, function(x) if(is.numeric(x)) 
   c(mean = mean(x), var = var(x), max = max(x), min = min(x)) else table(x))

-输出

#$Sepal.Length
#     mean       var       max     min      
#5.8433333 0.6856935 7.9000000 4.3000000 

#$Sepal.Width
#     mean       var       max       min    
#3.0573333 0.1899794 4.4000000 2.0000000 

#$Petal.Length
#    mean      var      max     min     
#3.758000 3.116278 6.900000 1.000000 

#$Petal.Width
#     mean       var       max      min     
#1.1993333 0.5810063 2.5000000 0.1000000 

#$Species
#x
#    setosa versicolor  virginica 
#        50         50         50 

可以封装成函数

summary_fun <- function(dat) {
 lapply(dat, function(x)
     if(is.numeric(x)) {
   c(mean = mean(x), var = var(x), max = max(x), min = min(x))
   } else if(is.character(x)|is.factor(x)) {
       table(x)
    } else NA
    )
  }
    

然后调用

summary_fun(iris)

    

【讨论】:

  • 哦,对不起,我想使用内置函数。应用功能之一是否可以这样工作?
  • @kongkkk 是包中的内置函数
  • 啊,我想这不是我想要的。但谢谢。
  • @kongkkk 我认为更新后的与您在图片中显示的相匹配
  • 我有一个问题。当我想处理“else”时该怎么办?我的意思是当类只是字符和因子时,我想打印表格,而不是其他所有
猜你喜欢
  • 2022-08-11
  • 2021-09-16
  • 2022-01-24
  • 2015-11-12
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 2014-12-31
  • 1970-01-01
相关资源
最近更新 更多