tutoring2

按行向加

李家翔 2018-12-19

data <- 
    matrix(1:100,ncol = 20) %>% 
    as.data.frame()
data
##   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20
## 1  1  6 11 16 21 26 31 36 41  46  51  56  61  66  71  76  81  86  91  96
## 2  2  7 12 17 22 27 32 37 42  47  52  57  62  67  72  77  82  87  92  97
## 3  3  8 13 18 23 28 33 38 43  48  53  58  63  68  73  78  83  88  93  98
## 4  4  9 14 19 24 29 34 39 44  49  54  59  64  69  74  79  84  89  94  99
## 5  5 10 15 20 25 30 35 40 45  50  55  60  65  70  75  80  85  90  95 100
data %>% 
    mutate(sum = pmap_dbl(.,sum)) %>% 
    select(sum,everything())
##    sum V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19
## 1  970  1  6 11 16 21 26 31 36 41  46  51  56  61  66  71  76  81  86  91
## 2  990  2  7 12 17 22 27 32 37 42  47  52  57  62  67  72  77  82  87  92
## 3 1010  3  8 13 18 23 28 33 38 43  48  53  58  63  68  73  78  83  88  93
## 4 1030  4  9 14 19 24 29 34 39 44  49  54  59  64  69  74  79  84  89  94
## 5 1050  5 10 15 20 25 30 35 40 45  50  55  60  65  70  75  80  85  90  95
##   V20
## 1  96
## 2  97
## 3  98
## 4  99
## 5 100

也可以使用 rowSums,但是这不是普遍的办法,pmap_dbl可以继续计算其他统计值

data %>% 
    mutate(
        sum = pmap_dbl(.,sum)
        ,sd = pmap_dbl(.,lift_vd(sd))
        ,var = pmap_dbl(.,lift_vd(var))
        ,median = pmap_dbl(.,lift_vd(median))
        ) %>% 
    select(sum,sd,var,median,everything())
##    sum      sd var median V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14
## 1  970 29.5804 875   48.5  1  6 11 16 21 26 31 36 41  46  51  56  61  66
## 2  990 29.5804 875   49.5  2  7 12 17 22 27 32 37 42  47  52  57  62  67
## 3 1010 29.5804 875   50.5  3  8 13 18 23 28 33 38 43  48  53  58  63  68
## 4 1030 29.5804 875   51.5  4  9 14 19 24 29 34 39 44  49  54  59  64  69
## 5 1050 29.5804 875   52.5  5 10 15 20 25 30 35 40 45  50  55  60  65  70
##   V15 V16 V17 V18 V19 V20
## 1  71  76  81  86  91  96
## 2  72  77  82  87  92  97
## 3  73  78  83  88  93  98
## 4  74  79  84  89  94  99
## 5  75  80  85  90  95 100