R &引用;长度为';dimnames';[2] 不等于数组范围“;在两个非常相似的集合中的一个集合上

R &引用;长度为';dimnames';[2] 不等于数组范围“;在两个非常相似的集合中的一个集合上,r,R,我在两个数据帧vols和flow中收集数据。后者可以转换为矩阵,但前者不能: as.matrix(vols) Error in `colnames<-`(`*tmp*`, value = c("CanovesSamalus", "Llinars", : length of 'dimnames' [2] not equal to array extent 以及: 尚不清楚您是如何创建这些data.frames的。从str输出中,它们似乎不是普通的data.frames,而是其他类型

我在两个数据帧
vols
flow
中收集数据。后者可以转换为矩阵,但前者不能:

as.matrix(vols)
Error in `colnames<-`(`*tmp*`, value = c("CanovesSamalus", "Llinars",  : 
  length of 'dimnames' [2] not equal to array extent
以及:


尚不清楚您是如何创建这些data.frames的。从
str
输出中,它们似乎不是普通的data.frames,而是其他类型的列表,因此可能需要先将对象转换为data.frames。使用
as.matrix(as.data.frame(vols))

如果您尝试
as.matrix(vols[,-1]),您会得到什么
!但这真的很奇怪!那应该行得通!它工作得很好[1][,2][,3][,4][,5][,6][,7][,8][,9][,10][,11][1,]NA 172.660 3779.832453.096 4996.344 1830.09 9898你是如何创建这些数据的?str的
str
输出看起来不像我期望的普通data.frame。尝试
as.matrix(as.data.frame(vols))
as.matrix(as.data.frame(vols))
。谢谢。这两个文件都来自Excel工作表,由
read.xls
,日期格式为
data
,使用
as.date
%m-%d-%y
<代码>流动
铸造
(没有以前的
熔化
),行按
流动$data
排序。类似于
vols
,除了这一个是
melt
merge
d与另一个表合并,以计算一个新列,该列在被
cast
之前添加到该表中。完成后,所有内容都转换为字符:
as.matrix(as.data.frame(vols))[1,]
给出
数据容器Samalus Llinars LlinarsCanoves Mirador Santacana StAntoniVilamajor N1 N3“2011-01-01”NA“172.660”“3779.832”
…矩阵只能包含一种数据类型。你可以把你的日期转换成数字,这似乎很容易做到。谢谢
> vols[1:3,]
    data CanovesSamalus Llinars LlinarsCanoves Mirador Santacana StAntoniVilamajor   N1    N3   N4   N7   N9
1 2011-01-01             NA  172.66       3779.832 453.096  4996.344           1830.09 9898 9898 9898 9898 9898
2 2011-01-02             NA  172.66       3809.036 494.977  4699.088           1712.43 9898 9898 9898 9898 9898
3 2011-01-03             NA  172.66       3134.215 517.979  4319.374           1716.67 9898 9898 9898 9898 9898

> str(vols)
List of 12
 $ data             : Date[1:365], format: "2011-01-01" "2011-01-02" "2011-01-03" "2011-01-04" ...
 $ CanovesSamalus   : num [1:365] NA NA NA NA NA NA NA NA NA NA ...
 $ Llinars          : num [1:365] 173 173 173 172 172 ...
 $ LlinarsCanoves   : num [1:365] 3780 3809 3134 3221 3113 ...
 $ Mirador          : num [1:365] 453 495 518 516 495 ...
 $ Santacana        : num [1:365] 4996 4699 4319 4276 4179 ...
 $ StAntoniVilamajor: num [1:365] 1830 1712 1717 1671 1733 ...
 $ N1               : num [1:365] 9898 9898 9898 9898 9898 ...
 $ N3               : num [1:365] 9898 9898 9898 9898 9898 ...
 $ N4               : num [1:365] 9898 9898 9898 9898 9898 ...
 $ N7               : num [1:365] 9898 9898 9898 9898 9898 ...
 $ N9               : num [1:365] 9898 9898 9898 9898 9898 ...
 - attr(*, "row.names")= int [1:365] 1 2 3 4 5 6 7 8 9 10 ...
 - attr(*, "idvars")= chr "data"
 - attr(*, "rdimnames")=List of 2
  ..$ :'data.frame':    365 obs. of  1 variable:
  .. ..$ data: Date[1:365], format: "2011-01-01" "2011-01-02" "2011-01-03" "2011-01-04" ...
  ..$ :'data.frame':    6 obs. of  1 variable:
  .. ..$ node: Factor w/ 6 levels "CanovesSamalus",..: 1 2 3 4 5 6
> flow[1:3,]
    data N8FT01001 N9FT00201 N9FT00401 N9FT00402 N9FT00403 N9FT00801 N9FT01001 N9FT01002 N9FT01101 N9FT01201 N9FT01202
1 2011-01-01      7123         0      2113      3105       172       791      3909      2489      1188      1182      1135
2 2011-01-02      4197         0      1984      1887       152       801      2255      2449      1227      1221      1090
3 2011-01-03      3685         0      2221      1664        27       769      1969      2516      1512      1509      1400
N9FT01301 N9FT01401
1       118       119
2       114       115
3        77        78


> str(flow)
List of 14
 $ data     : Date[1:365], format: "2011-01-01" "2011-01-02" "2011-01-03" "2011-01-04" ...
 $ N8FT01001: int [1:365] 7123 4197 3685 4616 4534 6024 3118 5977 5455 2845 ...
 $ N9FT00201: int [1:365] 0 0 0 0 0 0 0 0 0 0 ...
 $ N9FT00401: int [1:365] 2113 1984 2221 2010 1994 1776 2049 1953 2068 2028 ...
 $ N9FT00402: int [1:365] 3105 1887 1664 2066 2004 2741 1395 2645 2563 1064 ...
 $ N9FT00403: int [1:365] 172 152 27 4 14 180 14 166 155 5 ...
 $ N9FT00801: int [1:365] 791 801 769 789 688 663 730 732 767 694 ...
 $ N9FT01001: int [1:365] 3909 2255 1969 2487 2467 3198 1681 3249 2812 1740 ...
 $ N9FT01002: int [1:365] 2489 2449 2516 2551 2582 2476 2513 2582 2584 2602 ...
 $ N9FT01101: int [1:365] 1188 1227 1512 1236 1317 1006 1449 1171 1327 1345 ...
 $ N9FT01201: int [1:365] 1182 1221 1509 1232 1313 1002 1445 1167 1321 1341 ...
 $ N9FT01202: int [1:365] 1135 1090 1400 1112 1236 922 1283 1048 1218 1137 ...
 $ N9FT01301: int [1:365] 118 114 77 92 102 102 137 115 133 174 ...
 $ N9FT01401: int [1:365] 119 115 78 93 103 103 138 116 134 175 ...
 - attr(*, "row.names")= int [1:365] 1 2 3 4 5 6 7 8 9 10 ...
 - attr(*, "idvars")= chr "data"
 - attr(*, "rdimnames")=List of 2
  ..$ :'data.frame':    365 obs. of  1 variable:
  .. ..$ data: Date[1:365], format: "2011-01-01" "2011-01-02" "2011-01-03" "2011-01-04" ...
  ..$ :'data.frame':    13 obs. of  1 variable:
  .. ..$ TAG: Factor w/ 13 levels "N8FT01001","N9FT00201",..: 1 2 3 4 5 6 7 8 9 10 ...