将函数应用于n列并在R中的n个新列中获取结果。如何?

时间:2018-04-25 11:38:08

标签: r

假设我有一个包含10个数值的数据集,我想对每个列进行标准化(实际上应用任何函数),因此对于A列,我希望规范化并在列ANorm中获得“A normalized” 。其余的一样。

如何在R中编程?

我尝试了一个for循环和lapply,我认为这是正确的方法,但我无法达到最终结果。

非常感谢任何帮助或指示!

1 个答案:

答案 0 :(得分:1)

这适用于tidyverse解决方案

library(tidyverse)
set.seed(123)
matrix(runif(50),ncol=5) %>% 
  as_tibble() %>% 
  mutate_at(vars(V1:V5), funs(norm = ./mean(.)))
# A tibble: 10 x 10
       V1     V2    V3     V4    V5 V1_norm V2_norm V3_norm V4_norm V5_norm
    <dbl>  <dbl> <dbl>  <dbl> <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
 1 0.288  0.957  0.890 0.963  0.143  0.497   1.83     1.45   1.79     0.413
 2 0.788  0.453  0.693 0.902  0.415  1.36    0.866    1.13   1.68     1.20 
 3 0.409  0.678  0.641 0.691  0.414  0.707   1.29     1.04   1.28     1.20 
 4 0.883  0.573  0.994 0.795  0.369  1.53    1.09     1.62   1.48     1.07 
 5 0.940  0.103  0.656 0.0246 0.152  1.63    0.197    1.07   0.0458   0.441
 6 0.0456 0.900  0.709 0.478  0.139  0.0788  1.72     1.15   0.888    0.402
 7 0.528  0.246  0.544 0.758  0.233  0.913   0.470    0.884  1.41     0.675
 8 0.892  0.0421 0.594 0.216  0.466  1.54    0.0804   0.965  0.402    1.35 
 9 0.551  0.328  0.289 0.318  0.266  0.954   0.627    0.470  0.592    0.770
10 0.457  0.955  0.147 0.232  0.858  0.790   1.82     0.239  0.431    2.48