更改阵列中矩阵的名称失败(names from the matrix)

我正在为基本的 R 使用制作一些练习和演示。前一段时间,为了玩一个子集并访问一个对象中的不同元素,我制作了一个练习,它是“尝试更改数组 X 中矩阵 1 的行和列的名称”。

我正在为基本的 R 使用制作一些练习和演示。前一段时间,为了玩一个子集并访问一个对象中的不同元素,我制作了一个练习,它是“尝试更改数组 X 中矩阵 1 的行和列的名称”。

, , 1
     [,1] [,2] [,3] [,4] [,5]
[1,]  0.5  0.5  0.5  0.5  0.5
[2,]  0.5  0.5  0.5  0.5  0.5
[3,]  0.5  0.5  0.5  0.5  0.5
[4,]  0.5  0.5  0.5  0.5  0.5
[5,]  0.5  0.5  0.5  0.5  0.5
, , 2
     [,1] [,2] [,3] [,4] [,5]
[1,]  4.5  4.5  4.5  4.5  4.5
[2,]  4.5  4.5  4.5  4.5  4.5
[3,]  4.5  4.5  4.5  4.5  4.5
[4,]  4.5  4.5  4.5  4.5  4.5
[5,]  4.5  4.5  4.5  4.5  4.5

当时对我有用的解决方案是:

colnames(ArrayX[,, 1]) <- c(paste("coordX", 1:5, sep = ""))
rownames(ArrayX[,, 1]) <- c(paste("coordY", 1:5, sep = ""))

但是,现在,即使运行时没有返回错误,数组也保持不变....

这里是会话信息:

R version 4.0.4 (2021-02-15)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18363)
Matrix products: default
locale:
[1] LC_COLLATE=Spanish_Spain.1252  LC_CTYPE=Spanish_Spain.1252    LC_MONETARY=Spanish_Spain.1252 LC_NUMERIC=C                  
[5] LC_TIME=Spanish_Spain.1252    
attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     
other attached packages:
 [1] RODBC_1.3-17    knitr_1.31      readxl_1.3.1    reshape2_1.4.4  forcats_0.5.1   stringr_1.4.0   dplyr_1.0.5     purrr_0.3.4    
 [9] readr_1.4.0     tidyr_1.1.3     tibble_3.1.0    ggplot2_3.3.3   tidyverse_1.3.0
loaded via a namespace (and not attached):
 [1] Rcpp_1.0.6       plyr_1.8.6       cellranger_1.1.0 pillar_1.5.1     compiler_4.0.4   dbplyr_2.1.0     tools_4.0.4     
 [8] jsonlite_1.7.2   lubridate_1.7.10 lifecycle_1.0.0  gtable_0.3.0     pkgconfig_2.0.3  rlang_0.4.10     reprex_1.0.0    
[15] cli_2.3.1        rstudioapi_0.13  DBI_1.1.1        xfun_0.22        haven_2.3.1      withr_2.4.1      xml2_1.3.2      
[22] httr_1.4.2       fs_1.5.0         generics_0.1.0   vctrs_0.3.6      hms_1.0.0        grid_4.0.4       tidyselect_1.1.0
[29] glue_1.4.2       R6_2.5.0         fansi_0.4.2      modelr_0.1.8     magrittr_2.0.1   backports_1.2.1  scales_1.1.1    
[36] ellipsis_0.3.1   rvest_1.0.0      assertthat_0.2.1 colorspace_2.0-0 utf8_1.2.1       stringi_1.5.3    munsell_0.5.0   
[43] broom_0.7.5      crayon_1.4.1 

我很困惑,谢谢

2

不要在对rownames(etc) 的调用中使用子集。

ArrayX <- array(1:50, dim=c(5,5,2))
ArrayX
# , , 1
#      [,1] [,2] [,3] [,4] [,5]
# [1,]    1    6   11   16   21
# [2,]    2    7   12   17   22
# [3,]    3    8   13   18   23
# [4,]    4    9   14   19   24
# [5,]    5   10   15   20   25
# , , 2
#      [,1] [,2] [,3] [,4] [,5]
# [1,]   26   31   36   41   46
# [2,]   27   32   37   42   47
# [3,]   28   33   38   43   48
# [4,]   29   34   39   44   49
# [5,]   30   35   40   45   50
colnames(ArrayX) <- paste0("coordX", 1:5)
rownames(ArrayX) <- paste0("coordY", 1:5)
ArrayX
# , , 1
#         coordX1 coordX2 coordX3 coordX4 coordX5
# coordY1       1       6      11      16      21
# coordY2       2       7      12      17      22
# coordY3       3       8      13      18      23
# coordY4       4       9      14      19      24
# coordY5       5      10      15      20      25
# , , 2
#         coordX1 coordX2 coordX3 coordX4 coordX5
# coordY1      26      31      36      41      46
# coordY2      27      32      37      42      47
# coordY3      28      33      38      43      48
# coordY4      29      34      39      44      49
# coordY5      30      35      40      45      50
1

我们可以使用dimnames

dimnames(ArrayX) <- list(paste0("coordY", 1:5), paste0("coordX", 1:5), NULL)

-输出,输出

ArrayX
#, , 1
#           coordX1    coordX2    coordX3    coordX4    coordX5
#coordY1  0.9450726  1.0642934  1.7164833 -1.1610352  2.6045781
#coordY2 -0.2153065 -0.8209356  1.3052241 -0.5853774 -1.5833918
#coordY3 -1.0333230  0.8766106 -0.5811332  0.9636683 -0.4263902
#coordY4  0.8281970 -1.4391891  0.3491635  0.1239269  0.7396240
#coordY5 -0.2048288  1.1179848 -0.8929726 -1.8674698 -2.0467980
#, , 2
#           coordX1    coordX2     coordX3    coordX4    coordX5
#coordY1  0.1121423 -0.3015090 -0.18311717 -1.6025064  0.1504099
#coordY2  1.2635544 -0.1770131  0.37860981 -0.6149095  0.1354814
#coordY3  0.3219548  0.5072806 -0.02555505 -0.4057642 -0.7276835
#coordY4 -0.1939912 -1.0914181 -0.92550545 -0.2285773 -0.6883232
#coordY5  2.1722877 -0.8981309 -2.04296086  1.1754687 -1.3772374

所有元素的属性应该相同。根据?array

“dimnames”属性是可选的:如果存在,则它是一个列表,每个维度都有一个组件,NULL 或该维度的“dim”属性的元素给定的长度的字符向量。

data

set.seed(24)
ArrayX <- array(rnorm(5 * 5 *2), dim = c(5, 5, 2))

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(859)
平衡化学方程式(balancing chemical equations website)
上一篇
ReactNative将粗体或斜体添加到字段中的单个单词
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(2条)