我一直在尝试制作一个在每列中都有逻辑矩阵的1行矩阵,但是运气不好。我尝试了一个for循环:
mat<-matrix(NULL,nrow=1,ncol=60)
for(i in 1:60){mat<-list(mat,matrix(FALSE,nrow=4,ncol=4))}
这产生了一个带有奇怪大小的子矩阵的4x4矩阵。
mat<-matrix(NULL,n=row=1,ncol=60)
for(i in 1:60){mat[i]<-matrix(FALSE,nrow=4,ncol=4)}
那产生了一个带有60个FALSE的NULLxNULL矩阵。
答案 0 :(得分:0)
R中的矩阵是严格定义的元素数组。您可能需要一个结构,或者更简单的是list
变量。
foo<- list()
foo[1:4]<-1:4 #creates four elements in list variable. Short example; you'd use 1:60
foo[[1]]<- matrix(rep(TRUE,16),nr=4)
等等。
但我猜你用更高维的矩阵而不是像那样的结构会更开心。
答案 1 :(得分:0)
矩阵本质上是二维的。您可以创建一个data.frame,其中每列是4x4矩阵:
tmp <- data.frame(V1=logical(4))
for (i in 1:60) tmp[i] <- matrix(FALSE, nrow=4, ncol=4)
(这是制作data.frame的一种尴尬方式,因为data.frames倾向于将矩阵的列分散到不同的列中。)
> str(tmp)
'data.frame': 4 obs. of 60 variables:
$ V1 : logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V2 : logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V3 : logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V4 : logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V5 : logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V6 : logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V7 : logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V8 : logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V9 : logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V10: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V11: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V12: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V13: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V14: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V15: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V16: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V17: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V18: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V19: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V20: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V21: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V22: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V23: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V24: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V25: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V26: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V27: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V28: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V29: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V30: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V31: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V32: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V33: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V34: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V35: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V36: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V37: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V38: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V39: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V40: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V41: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V42: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V43: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V44: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V45: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V46: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V47: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V48: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V49: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V50: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V51: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V52: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V53: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V54: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V55: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V56: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V57: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V58: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V59: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
$ V60: logi [1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
或者,你可以制作一个三维数组:
tmp <- array(FALSE, dim=c(60,4,4))
第一维上的索引给出了一个4x4矩阵:
> str(tmp)
logi [1:60, 1:4, 1:4] FALSE FALSE FALSE FALSE FALSE FALSE ...
> tmp[1,,]
[,1] [,2] [,3] [,4]
[1,] FALSE FALSE FALSE FALSE
[2,] FALSE FALSE FALSE FALSE
[3,] FALSE FALSE FALSE FALSE
[4,] FALSE FALSE FALSE FALSE
我认为后者可能更接近对你有用的东西,但不知道为什么你想要那个特定的数据结构,很难说。
在Carl's answer上构建,您可以创建一个列表,其中每个元素都是一个4x4逻辑矩阵:
tmp <- rep(list(matrix(FALSE, nrow=4, ncol=4)), 60)
> tmp[[1]]
[,1] [,2] [,3] [,4]
[1,] FALSE FALSE FALSE FALSE
[2,] FALSE FALSE FALSE FALSE
[3,] FALSE FALSE FALSE FALSE
[4,] FALSE FALSE FALSE FALSE
如果确实希望这是一个1到60的结构,其中每个元素都是4x4逻辑矩阵,那么您也可以在列表中添加维度:
tmp <- rep(list(matrix(FALSE, nrow=4, ncol=4)), 60)
dim(tmp) <- c(1,60)
可以像:
一样访问> tmp[[1,3]]
[,1] [,2] [,3] [,4]
[1,] FALSE FALSE FALSE FALSE
[2,] FALSE FALSE FALSE FALSE
[3,] FALSE FALSE FALSE FALSE
[4,] FALSE FALSE FALSE FALSE
> tmp
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] Logical,16 Logical,16 Logical,16 Logical,16 Logical,16 Logical,16
[,7] [,8] [,9] [,10] [,11] [,12]
[1,] Logical,16 Logical,16 Logical,16 Logical,16 Logical,16 Logical,16
[,13] [,14] [,15] [,16] [,17] [,18]
[1,] Logical,16 Logical,16 Logical,16 Logical,16 Logical,16 Logical,16
[,19] [,20] [,21] [,22] [,23] [,24]
[1,] Logical,16 Logical,16 Logical,16 Logical,16 Logical,16 Logical,16
[,25] [,26] [,27] [,28] [,29] [,30]
[1,] Logical,16 Logical,16 Logical,16 Logical,16 Logical,16 Logical,16
[,31] [,32] [,33] [,34] [,35] [,36]
[1,] Logical,16 Logical,16 Logical,16 Logical,16 Logical,16 Logical,16
[,37] [,38] [,39] [,40] [,41] [,42]
[1,] Logical,16 Logical,16 Logical,16 Logical,16 Logical,16 Logical,16
[,43] [,44] [,45] [,46] [,47] [,48]
[1,] Logical,16 Logical,16 Logical,16 Logical,16 Logical,16 Logical,16
[,49] [,50] [,51] [,52] [,53] [,54]
[1,] Logical,16 Logical,16 Logical,16 Logical,16 Logical,16 Logical,16
[,55] [,56] [,57] [,58] [,59] [,60]
[1,] Logical,16 Logical,16 Logical,16 Logical,16 Logical,16 Logical,16
不知道你为什么要这样做。