melt函数给出match.names()错误

时间:2017-11-23 03:08:44

标签: r reshape names melt

我有一个数据框(dat),其结构如下:

Classes ‘grouped_df’, ‘tbl_df’, ‘tbl’ and 'data.frame': 16 obs. of  28 variables:
 $ tank     : Factor w/ 16 levels "1","2","3","4",..: 1 4 5 16 6 8 10 11 7 12 ... #This is a factor
 $ treatment: Factor w/ 4 levels "1","2","3","4": 1 1 1 1 2 2 2 2 3 3 ...
 $ t0       : int  13 14 16 10 18 19 14 20 10 15 ...#The following are numbers at different time densities
 $ t3       : int  28 16 18 28 28 28 38 44 16 11 ...#time 3
 $ t7       : int  18 19 43 57 37 90 70 69 11 24 ...#time 7
 $ t10      : int  4 24 30 15 59 54 56 16 66 19 ...#time 10
 $ t14      : int  12 80 37 21 35 39 102 16 78 18 ...#time 17
 $ t17      : int  4 36 58 29 38 42 54 46 48 12 ...#time 21
 $ t21      : int  45 62 29 0 27 35 45 89 11 16 ...
 $ t24      : int  55 97 13 116 62 60 14 112 3 56 ...
 $ t28      : int  83 128 87 145 112 138 64 143 9 153 ...
 $ t31      : int  80 104 123 134 89 76 98 96 34 120 ...
 $ t35      : int  12 74 71 80 93 78 100 56 80 102 ...
 $ t38      : int  65 76 82 88 76 71 96 68 108 63 ...#time 38
 $ t42      : int  127 133 72 108 68 111 92 0 109 116 ...
 $ t45      : int  81 99 52 85 113 105 84 54 100 137 ...
 $ t49      : int  30 99 65 136 192 158 115 98 40 172 ...
 $ t52      : int  16 112 58 128 196 78 88 10 56 231 ...
 $ t56      : int  44 156 149 102 297 229 172 72 46 207 ...
 $ t59      : int  61 105 141 105 329 130 186 66 75 169 ...#time59
 $ t63      : int  81 58 191 70 171 39 61 37 21 110 ...
 $ t66      : int  91 122 239 43 232 101 107 27 46 102 ...
 $ t70      : int  138 97 297 38 161 87 93 55 84 95 ...
 $ t72      : int  115 100 338 37 381 344 138 51 83 113 ...
 $ t77      : int  140 117 245 91 195 331 84 21 3 107 ...
 $ t80      : int  120 88 164 70 217 279 33 0 1 74 ...#time80
 $ t84      : int  198 87 166 33 265 138 100 0 0 20 ...
 $ t87      : int  165 63 132 0 182 234 15 0 2 1 ... #This is the end of the data set 
 - attr(*, "vars")= chr "tank" #the attributes
 - attr(*, "drop")= logi TRUE  #the attributes
 - attr(*, "indices")=List of 16 #the attributes
  ..$ : int 0
  ..$ : int 12
  ..$ : int 13
  ..$ : int 1
  ..$ : int 2
  ..$ : int 4
  ..$ : int 8
  ..$ : int 5
  ..$ : int 14
  ..$ : int 6
  ..$ : int 7
  ..$ : int 9
  ..$ : int 10
  ..$ : int 15
  ..$ : int 11
  ..$ : int 3
 - attr(*, "group_sizes")= int  1 1 1 1 1 1 1 1 1 1 ...
 - attr(*, "biggest_group_size")= int 1
 - attr(*, "labels")='data.frame':  16 obs. of  1 variable:
  ..$ tank: Factor w/ 16 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
  ..- attr(*, "vars")= chr "tank"
  ..- attr(*, "drop")= logi TRUE

我正在尝试使用以下内容来融合数据框:

dat_melt< - melt(dat,id = c(“tank”,“treatment”))#I使用了reshape库来融化

我收到"Error in match.names(clabs, names(xi)) : names do not match previous names"

的错误消息

我不知道为什么会出现这个错误。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

问题可能在于属性。我们可以转换为data.frame以剥离这些属性

dat %>% 
    as.data.frame %>%
    melt(., id = c('tank', 'treatment')) 

或使用gather

中的tidyr
dat %>%
   gather(key, value, -tank, -treatment)