如何在一系列生成的地块上用 "应用 "自动加标题 [关闭] 。

问题描述 投票:1回答:1

我正在从SPSS转到R系统进行数据分析,我想写一个可以用于未来大多数分析的scrpit。为了检查正态性,我想绘制每个连续变量的直方图、QQ图和降维图。 为此,我希望R能够生成数据集中所有连续变量的qq图,并将变量作为标题。 我设法做到这一点,首先选择所有的数字变量,并将它们存储为数据。 接下来我尝试使用apply来生成所有列的qqplot。我成功地做到了,但不幸的是,即使我努力了一天多,也没有成功得到正确的标题。我需要知道如何编写代码来自动取变量(x)的名称作为标题。有人知道如何解决这个问题吗?

这是wat我做的,但根本没用。

apply(data.numerical, 2, function(x) {ggqqplot(x, title=colnames(data.numerical)[x])})

先谢谢你!

Jeroen

r function plot apply
1个回答
3
投票

欢迎来到Stack Overflow,也欢迎来到R! 首先我将提供一个解决方案,并提供一些今后在Stack Overflow上提问的技巧。然后我会提供一个解释,为什么你的尝试没有成功。

解决方法

所以我是这样做的,这在某些方面并不是... 与你尝试的不同。

## Specify non-base packages needed
library(ggpubr)
## Generate example data
set.seed(123)
data.numerical <- data.frame(a = rnorm(100), b = rnorm(100))
## Make QQ plot for each column with the column's name as the title
sapply(names(data.numerical), function(x) {
    print(ggqqplot(data = data.numerical, x = x, title = x))
})
## Or, equivalently
plots <- lapply(names(data.numerical), function(x) {
    ggqqplot(data = data.numerical, x = x, title = x)
})
plots[[1]]
plots[[2]]

这是结果,你可以看到这些图都有适当的名字。

enter image description here

enter image description here

请注意我在代码中加入的内容 之前 绘图代码,指定我使用的软件包,并给其他人提供一个简单的方法来重现我的数据。以后问问题的时候,请提供这些东西,它们给我们提供了我们所谓的最小可重现的例子,这有助于我们帮助你。

那么为什么我的尝试没有成功呢?

如果我们看一下 help("ggqqplot"),我们将看到函数期望的是 data 栏以及要指定的 x 要绘制。所以,与其说是 apply()在列上,我 sapply() 在名称上注明 x 这样一来。这也有助于 title 争论;因为我 sapply()在名字上,我可以直接提供给。title 争论。

最重要的是 colnames(data.numerical)[x] 并没有做我认为你认为它在做的事情。在你的尝试中。x 栏目索引,而是一个 整列的数据框. 所以,它并没有像你可能期待的那样,将列名子集化。


3
投票

欢迎你的加入! 为了加强@duckmayer的一些观点。

  1. 总是告诉我们更多关于你的数据
  2. 首先要有一个态度,有人遇到了你的问题,有一个方案可以解决。 包括针对 expss 用户(提示,提示)。 不要重新发明车轮。

既然我碰巧有 编写函数 来检查单变量发行版,我会用它。 没有说它是最好的,但它是这样的。 在实际情况中,你会发现dplyr::select_if可以很容易地从你的数据集中只选择数字变量。

library(dplyr)
library(purrr)
library(CGPfunctions)

playdata <- mtcars %>% select(hp, mpg, qsec)
titlevar <- names(playdata)
playdata %>% purrr::map2(.y = titlevar, ~ SeeDist(.x, whatplots = "d", title = .y))
#> Warning: There are 7 modal values displaying just the first 3

#> $hp
#> ------------------------------------------------------------------------------ 
#> .x
#> 
#>   length       n    NAs  unique      0s    mean  meanCI'
#>       32      32      0      22       0  146.69  121.97
#>           100.0%   0.0%            0.0%          171.41
#>                                                        
#>      .05     .10    .25  median     .75     .90     .95
#>    63.65   66.00  96.50  123.00  180.00  243.50  253.55
#>                                                        
#>    range      sd  vcoef     mad     IQR    skew    kurt
#>   283.00   68.56   0.47   77.10   83.50    0.73   -0.14
#>                                                        
#> lowest : 52.00, 62.00, 65.00, 66.00 (2), 91.00
#> highest: 215.00, 230.00, 245.00 (2), 264.00, 335.00
#> 
#> ' 95%-CI (classic)
#> 
#> 
#> $mpg
#> ------------------------------------------------------------------------------ 
#> .x
#> 
#>   length       n    NAs  unique     0s   mean  meanCI'
#>       32      32      0      25      0  20.09   17.92
#>           100.0%   0.0%           0.0%          22.26
#>                                                      
#>      .05     .10    .25  median    .75    .90     .95
#>    12.00   14.34  15.43   19.20  22.80  30.09   31.30
#>                                                      
#>    range      sd  vcoef     mad    IQR   skew    kurt
#>    23.50    6.03   0.30    5.41   7.38   0.61   -0.37
#>                                                      
#> lowest : 10.40 (2), 13.30, 14.30, 14.70, 15.00
#> highest: 26.00, 27.30, 30.40 (2), 32.40, 33.90
#> 
#> ' 95%-CI (classic)
#> 
#> 
#> $qsec
#> ------------------------------------------------------------------------------ 
#> .x
#> 
#>   length       n    NAs  unique     0s   mean  meanCI'
#>       32      32      0      30      0  17.85   17.20
#>           100.0%   0.0%           0.0%          18.49
#>                                                      
#>      .05     .10    .25  median    .75    .90     .95
#>    15.05   15.53  16.89   17.71  18.90  19.99   20.10
#>                                                      
#>    range      sd  vcoef     mad    IQR   skew    kurt
#>     8.40    1.79   0.10    1.42   2.01   0.37    0.34
#>                                                      
#> lowest : 14.50, 14.60, 15.41, 15.50, 15.84
#> highest: 19.90, 20.00, 20.01, 20.22, 22.90
#> 
#> ' 95%-CI (classic)
© www.soinside.com 2019 - 2024. All rights reserved.