Search code examples
rfunctionequalitytapply

tapply ()? Equal lengths?


Good afternoon, I'm trying applying the tapply function in order to obtain means reading through different treatment group (the 'Placebo' one and the 'Active' one) of the following dataset:

> str(dat_long)
'data.frame':   1500 obs. of  7 variables:
 $ subject.id: num  1 1 1 2 2 2 3 3 3 4 ...
 $ treatment : Factor w/ 2 levels "Placebo","Active": 1 1 1 1 1 1 1 1 1 1 ...
 $ sex       : num  1 1 1 1 1 1 1 1 1 1 ...
 $ age       : num  58.1 58.1 58.1 54.8 54.8 ...
 $ miss_pat  : chr  "---" "---" "---" "--X" ...
 $ times     : num  1 2 3 1 2 3 1 2 3 1 ...
 $ scores    : num  13.62 7.25 20.45 33.34 20.9 ..

The format of dataset I'm working on, is the "long" one. I've created the following list object

flst <- list(times, treatment)

by gathering the different time-poimt and the received treatments, where I've run the tapply() function.

(tN <-  
    tapply(scores, flst, 
              FUN = function(x) length(x[!is.na(x)])))

I cannot figure out why I'm perpetuating in getting back the same error

Error in tapply(scores, flst, FUN = function(x) length(x[!is.na(x)])) : 
  arguments must have the same length

I've tried to seeking for a solution (e.g coverting as a factor variables and so on), but none of them seemed suit my case. Anyone may have an idea the problem I'm going throgh?

Just in case, on purpose to cope with NA observation, what and where am I supposed to enter in the code?

Thanks a lot for paying attention

P.S. Just in case I report here following each of these arguments lengths

> length(flst)
[1] 2
> length(scores)
[1] 1500

Solution

  • Ok. Thanks for whom answers so far. I'm going to try to provide more details just for getting the situation more understandable.

    This is the original dataset I was working on, that is in the wide format.

    > dat_wide
        subject.id treatment measure1  measure2 measure3 sex      age miss_pat
    1            1         1 13.61906  7.249175 20.44918   1 58.12831      ---
    2            2         1 33.33751 20.896999       NA   1 54.77794      --X
    3            3         1       NA 20.869364 26.12443   1 59.55550      X--
    4            4         1 37.75143 26.253406 29.03896   1 59.37837      ---
    5            5         1 28.21168 14.652736 23.65234   1 63.34226      ---
    6            6         1 32.40856 18.702288       NA   0 55.36262      --X
    7            7         1 31.63005 18.682889       NA   1 59.02119      --X
    8            8         1       NA 18.244421 22.02274   0 57.57435      X--
    9            9         1       NA 27.351230 36.86480   1 52.08140      X--
    10          10         1 28.10867 16.769758 23.67930   1 62.93165      ---
    11          11         1 33.55693 18.499841       NA   0 53.46754      --X
    12          12         1 22.88379 14.061066 30.02255   1 57.49554      ---
    13          13         1 30.99073 15.350301 20.69450   1 57.92600      ---
    14          14         1 26.35118 15.195037 26.83573   0 58.42347      ---
    15          15         1 20.80077 16.112581 34.78064   1 60.22746      ---
    16          16         1 34.64003        NA 32.96944   1 56.28172      -X-
    17          17         1 26.70361 23.846794 31.24356   0 57.93085      ---
    18          18         1 25.61433 19.779788 25.75783   1 59.35028      ---
    19          19         1 36.51201 24.594663       NA   0 59.32188      --X
    20          20         1 33.18090 31.846358 34.21801   0 58.16217      ---
    21          21         1       NA 23.813420 28.49156   1 58.39313      X--
    22          22         1 28.20934 12.516007       NA   0 53.24436      --X
    23          23         1 30.64196        NA 35.01832   1 59.12392      -X-
    24          24         1       NA 26.596392       NA   1 56.22792      X-X
    25          25         1       NA 13.380347 27.72617   1 59.75437      X--
    26          26         1 27.95115 14.652209 27.44068   1 64.86220      ---
    27          27         1 31.01423 18.881365 30.15189   0 61.84734      ---
    28          28         1 41.28848 32.966200       NA   0 60.00848      --X
    29          29         1 23.90214 16.894180 30.08366   0 55.09433      ---
    30          30         1 27.91571 21.604654 29.97184   0 57.16355      ---
    31          31         1 25.48024 14.512467 26.89893   1 52.28091      ---
    32          32         1       NA 20.627647 24.94113   1 59.14089      X--
    33          33         1       NA        NA 30.30841   0 63.53035      XX-
    34          34         1       NA 17.220079 27.11605   0 54.70157      X--
    35          35         1       NA 22.904332 30.54679   0 62.82148      X--
    36          36         1 24.71682 11.343220 20.16185   0 55.81194      ---
    37          37         1 21.54434 15.245485 27.42116   0 56.77520      ---
    38          38         1 31.00812 21.882236 31.04285   1 53.60319      ---
    39          39         1       NA 29.445792       NA   0 62.88837      X-X
    40          40         1       NA 21.325835 27.29858   0 59.92034      X--
    41          41         1       NA 23.330492 31.01700   1 57.10396      X--
    42          42         1 22.13132 17.385187       NA   1 49.80586      --X
    43          43         1       NA 17.181349 24.70715   1 56.92603      X--
    44          44         1 24.57225        NA 32.11101   1 52.17824      -X-
    45          45         1 28.79543 15.302079 24.03278   1 63.82524      ---
    46          46         1 25.36835 18.152139 23.56443   1 56.89171      ---
    47          47         1       NA 21.594259       NA   1 56.04408      X-X
    48          48         1 26.62196 22.544339 27.04008   1 62.31757      ---
    49          49         1 24.22001  6.924847 19.89172   0 58.69229      ---
    50          50         1 34.14105 22.283254 34.41771   1 57.73471      ---
    51          51         1 18.90136 13.449724 28.69964   0 63.48494      ---
    52          52         1 33.01857 20.880303 31.32787   1 60.22318      ---
    53          53         1 31.06980 23.687328 32.66611   1 54.40638      ---
    54          54         1 31.98485 20.204848 26.00955   0 62.71068      ---
    55          55         1 30.50251 19.632418 19.03141   1 59.27135      ---
    56          56         1       NA 24.607656 30.37130   1 59.40362      X--
    57          57         1 33.55517 22.213067 27.59768   0 57.04789      ---
    58          58         1 24.19856 10.095334 21.76153   0 54.56281      ---
    59          59         1 29.62803 15.703452 26.99926   0 56.66213      ---
    60          60         1 34.01922 18.515003       NA   0 52.76635      --X
    61          61         1 29.86470 17.587567 26.02713   1 61.06847      ---
    62          62         1 25.61215 20.746458 25.80680   1 64.25965      ---
    63          63         1 27.60233 16.047261 27.63316   1 60.87826      ---
    64          64         1 24.18180 15.007888       NA   1 62.95863      --X
    65          65         1 30.34542 24.986253 32.33394   0 52.55152      ---
    66          66         1 21.53614 15.999301 27.95432   1 57.96632      ---
    67          67         1       NA 27.856354       NA   1 61.76696      X-X
    68          68         1 22.09629 15.252170 28.43995   0 64.99414      ---
    69          69         1 25.80952 18.565819 27.77111   0 61.26983      ---
    70          70         1 32.99136 22.610543       NA   0 57.79422      --X
    71          71         1       NA 20.701995 23.77574   0 59.83622      X--
    72          72         1 25.53110 18.466437 29.50384   1 60.38576      ---
    73          73         1 32.21151 21.740227 24.21088   1 56.07185      ---
    74          74         1 21.28635  9.444369 18.28459   0 50.20183      ---
    75          75         1       NA 25.000759 33.57668   1 50.22598      X--
    76          76         1 26.12087 12.385796 18.91420   1 53.40782      ---
    77          77         1       NA 22.767420 28.75717   1 48.27044      X--
    78          78         1 24.64162 21.218430       NA   1 55.94655      --X
    79          79         1 27.07266 15.348420 24.72210   0 53.69175      ---
    80          80         1 32.75587 28.013513       NA   0 58.04689      --X
    81          81         1 29.30842 17.072955 24.29882   1 61.06444      ---
    82          82         1       NA 18.382335 28.69544   0 58.54447      X--
    83          83         1 31.78905 24.603102 33.91789   0 56.24937      ---
    84          84         1 27.99531 19.921259 25.14260   1 58.49543      ---
    85          85         1 26.34945 17.718344 33.91154   1 65.19380      ---
    86          86         1 31.28590 18.000405 29.33850   1 64.79698      ---
    87          87         1 19.46943 12.058767 24.16417   0 61.99136      ---
    88          88         1 33.05861 27.022073 35.98174   1 57.79309      ---
    89          89         1 25.82099 14.353354 22.29782   1 56.99255      ---
    90          90         1       NA 18.394579 25.89987   0 52.29756      X--
    91          91         1       NA 17.594238       NA   0 57.60890      X-X
    92          92         1 36.62178 25.121140 34.90862   1 59.53585      ---
    93          93         1 31.58383 16.929367 18.06532   1 56.49771      ---
    94          94         1 32.79600 25.161476 29.57509   1 58.27547      ---
    95          95         1 32.57059 23.029130       NA   1 58.93147      --X
    96          96         1 32.44934 12.892612       NA   1 58.54679      --X
    97          97         1 28.83562 15.361608 21.96002   0 52.01731      ---
    98          98         1 28.49706 22.351217       NA   1 58.02899      --X
    99          99         1 25.28790 14.283020       NA   0 53.90112      --X
    100        100         1       NA 20.031777 29.93904   0 59.34664      X--
    101        101         1 30.86933 20.853957 23.67089   1 60.41797      ---
    102        102         1       NA        NA 25.25865   1 58.51619      XX-
    103        103         1 32.60158 23.890740 27.78209   1 52.93076      ---
    104        104         1 29.64438 26.275628 32.96612   0 57.67552      ---
    105        105         1 19.47877 10.237089 14.53323   1 62.56323      ---
    106        106         1 28.50985 24.172877       NA   1 56.20708      --X
    107        107         1       NA 21.111304 27.44881   1 55.47168      X--
    108        108         1 26.90495 15.140661 26.54333   0 59.25477      ---
    109        109         1       NA 28.740031       NA   0 53.61378      X-X
    110        110         1 27.55861 21.708753 30.61987   0 62.90328      ---
    111        111         1       NA 26.379662       NA   1 55.03740      X-X
    112        112         1 22.88802 13.638065 25.35349   0 57.83266      ---
    113        113         1 32.92606 24.907022 27.52318   0 62.04887      ---
    114        114         1       NA 23.853791 34.18453   1 60.97984      X--
    115        115         1       NA 32.755543 34.09703   1 60.03185      X--
    116        116         1 17.04010 10.772446 22.38210   1 56.68107      ---
    117        117         1 20.80304 16.040884 19.17766   0 60.20649      ---
    118        118         1       NA 15.337750 28.42040   0 58.86986      X--
    119        119         1 26.22063  9.210329 16.85208   1 61.22018      ---
    120        120         1 39.27848 21.273545 29.96761   0 57.69893      ---
    121        121         1       NA 20.177623 27.03394   1 58.71332      X--
    122        122         1       NA 19.084165 26.29572   1 61.85389      X--
    123        123         1 25.33397 22.082934 35.30603   0 55.82552      ---
    124        124         1 27.30526 22.526807 33.81731   1 58.29532      ---
    125        125         1       NA 26.020347 35.15877   1 66.13519      X--
    

    After further changes, I've converted it in the long format by using the function gather of the tidyr library and the I've ordered each observation so that the subject columns got ordered for each of the three measurements time-points.

    > dat_long
         subject.id treatment sex      age miss_pat times    scores
    1             1   Placebo   1 58.12831      ---     1 13.619060
    501           1   Placebo   1 58.12831      ---     2  7.249175
    1001          1   Placebo   1 58.12831      ---     3 20.449176
    2             2   Placebo   1 54.77794      --X     1 33.337510
    502           2   Placebo   1 54.77794      --X     2 20.896999
    1002          2   Placebo   1 54.77794      --X     3        NA
    3             3   Placebo   1 59.55550      X--     1        NA
    503           3   Placebo   1 59.55550      X--     2 20.869364
    1003          3   Placebo   1 59.55550      X--     3 26.124432
    4             4   Placebo   1 59.37837      ---     1 37.751430
    504           4   Placebo   1 59.37837      ---     2 26.253406
    1004          4   Placebo   1 59.37837      ---     3 29.038963
    5             5   Placebo   1 63.34226      ---     1 28.211679
    505           5   Placebo   1 63.34226      ---     2 14.652736
    1005          5   Placebo   1 63.34226      ---     3 23.652342
    6             6   Placebo   0 55.36262      --X     1 32.408561
    506           6   Placebo   0 55.36262      --X     2 18.702288
    1006          6   Placebo   0 55.36262      --X     3        NA
    7             7   Placebo   1 59.02119      --X     1 31.630050
    507           7   Placebo   1 59.02119      --X     2 18.682889
    1007          7   Placebo   1 59.02119      --X     3        NA
    8             8   Placebo   0 57.57435      X--     1        NA
    508           8   Placebo   0 57.57435      X--     2 18.244421
    1008          8   Placebo   0 57.57435      X--     3 22.022740
    9             9   Placebo   1 52.08140      X--     1        NA
    509           9   Placebo   1 52.08140      X--     2 27.351230
    1009          9   Placebo   1 52.08140      X--     3 36.864796
    10           10   Placebo   1 62.93165      ---     1 28.108672
    510          10   Placebo   1 62.93165      ---     2 16.769758
    1010         10   Placebo   1 62.93165      ---     3 23.679297
    11           11   Placebo   0 53.46754      --X     1 33.556930
    511          11   Placebo   0 53.46754      --X     2 18.499841
    1011         11   Placebo   0 53.46754      --X     3        NA
    12           12   Placebo   1 57.49554      ---     1 22.883795
    512          12   Placebo   1 57.49554      ---     2 14.061066
    1012         12   Placebo   1 57.49554      ---     3 30.022550
    13           13   Placebo   1 57.92600      ---     1 30.990728
    513          13   Placebo   1 57.92600      ---     2 15.350301
    1013         13   Placebo   1 57.92600      ---     3 20.694504
    14           14   Placebo   0 58.42347      ---     1 26.351176
    514          14   Placebo   0 58.42347      ---     2 15.195037
    1014         14   Placebo   0 58.42347      ---     3 26.835728
    15           15   Placebo   1 60.22746      ---     1 20.800769
    515          15   Placebo   1 60.22746      ---     2 16.112581
    1015         15   Placebo   1 60.22746      ---     3 34.780644
    16           16   Placebo   1 56.28172      -X-     1 34.640032
    516          16   Placebo   1 56.28172      -X-     2        NA
    1016         16   Placebo   1 56.28172      -X-     3 32.969443
    17           17   Placebo   0 57.93085      ---     1 26.703609
    517          17   Placebo   0 57.93085      ---     2 23.846794
    1017         17   Placebo   0 57.93085      ---     3 31.243559
    18           18   Placebo   1 59.35028      ---     1 25.614333
    518          18   Placebo   1 59.35028      ---     2 19.779788
    1018         18   Placebo   1 59.35028      ---     3 25.757833
    19           19   Placebo   0 59.32188      --X     1 36.512015
    519          19   Placebo   0 59.32188      --X     2 24.594663
    1019         19   Placebo   0 59.32188      --X     3        NA
    20           20   Placebo   0 58.16217      ---     1 33.180896
    520          20   Placebo   0 58.16217      ---     2 31.846358
    1020         20   Placebo   0 58.16217      ---     3 34.218013
    21           21   Placebo   1 58.39313      X--     1        NA
    521          21   Placebo   1 58.39313      X--     2 23.813420
    1021         21   Placebo   1 58.39313      X--     3 28.491556
    22           22   Placebo   0 53.24436      --X     1 28.209340
    522          22   Placebo   0 53.24436      --X     2 12.516007
    1022         22   Placebo   0 53.24436      --X     3        NA
    23           23   Placebo   1 59.12392      -X-     1 30.641962
    523          23   Placebo   1 59.12392      -X-     2        NA
    1023         23   Placebo   1 59.12392      -X-     3 35.018324
    24           24   Placebo   1 56.22792      X-X     1        NA
    524          24   Placebo   1 56.22792      X-X     2 26.596392
    1024         24   Placebo   1 56.22792      X-X     3        NA
    25           25   Placebo   1 59.75437      X--     1        NA
    525          25   Placebo   1 59.75437      X--     2 13.380347
    1025         25   Placebo   1 59.75437      X--     3 27.726174
    26           26   Placebo   1 64.86220      ---     1 27.951153
    526          26   Placebo   1 64.86220      ---     2 14.652209
    1026         26   Placebo   1 64.86220      ---     3 27.440682
    27           27   Placebo   0 61.84734      ---     1 31.014231
    527          27   Placebo   0 61.84734      ---     2 18.881365
    1027         27   Placebo   0 61.84734      ---     3 30.151889
    28           28   Placebo   0 60.00848      --X     1 41.288482
    528          28   Placebo   0 60.00848      --X     2 32.966200
    1028         28   Placebo   0 60.00848      --X     3        NA
    29           29   Placebo   0 55.09433      ---     1 23.902144
    529          29   Placebo   0 55.09433      ---     2 16.894180
    1029         29   Placebo   0 55.09433      ---     3 30.083663
    30           30   Placebo   0 57.16355      ---     1 27.915708
    530          30   Placebo   0 57.16355      ---     2 21.604654
    1030         30   Placebo   0 57.16355      ---     3 29.971840
    31           31   Placebo   1 52.28091      ---     1 25.480237
    531          31   Placebo   1 52.28091      ---     2 14.512467
    1031         31   Placebo   1 52.28091      ---     3 26.898932
    32           32   Placebo   1 59.14089      X--     1        NA
    532          32   Placebo   1 59.14089      X--     2 20.627647
    1032         32   Placebo   1 59.14089      X--     3 24.941132
    33           33   Placebo   0 63.53035      XX-     1        NA
    533          33   Placebo   0 63.53035      XX-     2        NA
    1033         33   Placebo   0 63.53035      XX-     3 30.308410
    34           34   Placebo   0 54.70157      X--     1        NA
    534          34   Placebo   0 54.70157      X--     2 17.220079
    1034         34   Placebo   0 54.70157      X--     3 27.116048
    35           35   Placebo   0 62.82148      X--     1        NA
    535          35   Placebo   0 62.82148      X--     2 22.904332
    1035         35   Placebo   0 62.82148      X--     3 30.546789
    36           36   Placebo   0 55.81194      ---     1 24.716824
    536          36   Placebo   0 55.81194      ---     2 11.343220
    1036         36   Placebo   0 55.81194      ---     3 20.161854
    37           37   Placebo   0 56.77520      ---     1 21.544340
    537          37   Placebo   0 56.77520      ---     2 15.245485
    1037         37   Placebo   0 56.77520      ---     3 27.421159
    38           38   Placebo   1 53.60319      ---     1 31.008123
    538          38   Placebo   1 53.60319      ---     2 21.882236
    1038         38   Placebo   1 53.60319      ---     3 31.042851
    39           39   Placebo   0 62.88837      X-X     1        NA
    539          39   Placebo   0 62.88837      X-X     2 29.445792
    1039         39   Placebo   0 62.88837      X-X     3        NA
    40           40   Placebo   0 59.92034      X--     1        NA
    540          40   Placebo   0 59.92034      X--     2 21.325835
    1040         40   Placebo   0 59.92034      X--     3 27.298584
    41           41   Placebo   1 57.10396      X--     1        NA
    541          41   Placebo   1 57.10396      X--     2 23.330492
    1041         41   Placebo   1 57.10396      X--     3 31.017001
    42           42   Placebo   1 49.80586      --X     1 22.131323
    542          42   Placebo   1 49.80586      --X     2 17.385187
    1042         42   Placebo   1 49.80586      --X     3        NA
    43           43   Placebo   1 56.92603      X--     1        NA
    543          43   Placebo   1 56.92603      X--     2 17.181349
    1043         43   Placebo   1 56.92603      X--     3 24.707149
    44           44   Placebo   1 52.17824      -X-     1 24.572247
    544          44   Placebo   1 52.17824      -X-     2        NA
    1044         44   Placebo   1 52.17824      -X-     3 32.111015
    45           45   Placebo   1 63.82524      ---     1 28.795431
    545          45   Placebo   1 63.82524      ---     2 15.302079
    1045         45   Placebo   1 63.82524      ---     3 24.032779
    46           46   Placebo   1 56.89171      ---     1 25.368353
    546          46   Placebo   1 56.89171      ---     2 18.152139
    1046         46   Placebo   1 56.89171      ---     3 23.564433
    47           47   Placebo   1 56.04408      X-X     1        NA
    547          47   Placebo   1 56.04408      X-X     2 21.594259
    1047         47   Placebo   1 56.04408      X-X     3        NA
    48           48   Placebo   1 62.31757      ---     1 26.621959
    

    I'm going to build a sort of table where both the sample size (tN), the mean (tMn) and the median (tMd) are reported. On this purpose I was going using the following code

    attach(dat_long)
    flst <- list(times, treatment)
    (tN <-  
        tapply(visual, flst, 
                  FUN = function(x) length(x[!is.na(x)])))
    
    (tMn <- tapply(scores, flst, FUN = mean))     
    (tMd <- tapply(scores, flst, FUN = median))  
    colnames(res <- cbind(tN, tMn, tMd))
    nms1 <- rep(c("P", "A"), 3)
    nms2 <- rep(c("n", "Mean", "Mdn"), rep(2, 3)) #n = numerosità
    colnames(res) <- paste(nms1, nms2, sep = ":")
    res
    

    I think nonìw to have the possible doubts cleared. Please, just let me know how to cope with this alternatively.

    Thanks