我正在尝试使用rbind合并两个矩阵,但这给了我一些我无法理解的警告。一段代码将说明。首先,我发布要合并的两个矩阵:
> first.m
label valueA valueB valueC measureA measureB measureC measureD
2 2 158 1020 10 94.0 20 8 0
4 4 101 1016 10 11.0 5 7 0
9 9 439 1003 10 12.0 7 7 0
11 11 434 985 10 25.5 6 12 0
12 12 839 984 10 39.5 18 8 0
14 14 339 979 10 43.5 13 13 0
23 23 127 926 10 16.5 6 10 0
26 25 748 916 10 57.0 13 14 0
34 33 352 904 10 43.5 15 20 0
35 34 254 904 10 239.5 29 14 0
> second.m
label valueA valueB valueC measureA measureB measureC measureD
1 5 832 1019 20 15.0 9 6 0
2 7 158 1020 20 102.5 24 8 0
3 8 139 1020 20 60.0 14 7 0
4 17 321 1018 20 77.0 14 10 0
5 21 815 1014 20 132.0 17 17 0
6 25 719 1009 20 158.0 21 14 0
7 28 496 1002 20 7.0 5 5 0
8 39 493 992 20 36.0 7 13 0
9 45 840 984 20 47.0 19 9 0
10 53 339 978 20 53.5 12 11 0
然后有关数据性质的一些信息似乎与我遇到的问题有关:
> typeof(first.m$label); typeof(second.m$label)
[1] "integer"
[1] "integer"
> typeof(first.m$label[1]); typeof(second.m$label[1])
[1] "integer"
[1] "integer"
最后是实际问题:
> this.work <- rbind(first.m, second.m)
> this.doesnt <- rbind(second.m, first.m)
Warning message:
In `[<-.factor`(`*tmp*`, ri, value = c(2L, 4L, 9L, 11L, 12L, 14L, :
invalid factor level, NA generated
为什么 rbind 以一种方式而不是另一种方式起作用?
编辑: 我忘了提一下,这个问题似乎与rbind() function in R produces NA's in the merged dataframe类似,但不能解决问题。
编辑2:
如@Rob的评论所述,此处str()的结果应用于我的两个矩阵。
> str(first.m)
'data.frame': 10 obs. of 8 variables:
$ nodeName: int 2 3 7 8 9 10 12 17 20 21
$ x : int 158 139 496 493 840 339 296 292 129 1008
$ y : int 1020 1020 1002 992 984 978 973 937 925 919
$ z : int 20 20 20 20 20 20 20 20 20 20
$ area : num 102 60 7 36 47 ...
$ width : int 24 14 5 7 19 12 7 14 10 7
$ height : int 8 7 5 13 9 11 13 7 15 6
$ zetaMean: num 0 13 0 7 0 0 0 0 0 0
> str(second.m)
'data.frame': 10 obs. of 8 variables:
$ nodeName: Factor w/ 275 levels "1003","1018",..: 152 210 235 70 80 87 94 125 139 160
$ x : int 832 158 139 321 815 719 496 493 840 339
$ y : int 1019 1020 1020 1018 1014 1009 1002 992 984 978
$ z : int 20 20 20 20 20 20 20 20 20 20
$ area : num 15 102 60 77 132 ...
$ width : int 9 24 14 14 17 21 5 7 19 12
$ height : int 6 8 7 10 17 14 5 13 9 11
$ zetaMean: num 0 0 0 0 0 0 0 0 0 0
答案 0 :(得分:0)
基本上,该问题与以下事实有关:我在导入数据表时未指定stringAsFactors是True还是False。
当我不提供任何信息时,R会将数据作为因素导入,因此出现了@Rob注释中提到的错误。