0

我通过将基于我的 for 循环的县值粘贴到单词矩阵来创建了一系列矩阵。这有效:

assign(paste("matrix",sort(unique(data$county), decreasing=FALSE)[k],sep=""), matrix(0,100,100))

我现在想写入此矩阵中的不同单元格,但不能。这失败了:

assign(paste("matrix",sort(unique(data$county), decreasing=FALSE)[k],sep="")[j,i],1)

错误出现在 paste() 中,因为它具有“不正确的维数”,因为 paste 会生成一个向量并且 [j,i] 正试图将其作为矩阵访问。我试图将我的粘贴包装在 get()、eval() 等中,但只是得到不同的错误。

所以问题是我如何使这个字符串返回为我可以使用 [j,i] 访问的矩阵?

4

2 回答 2

0

您可以改用此代码方案:

保存县列表,按您想要的方式排序(decreasing=FALSE默认):

counties <- sort(unique(as.character(data$county)))

为每个县创建归零矩阵:

matrices <- sapply(counties, function(.)matrix(0,100,100), simplify=FALSE)

写入特定单元格:

matrices[[counties[k]]][j,i] <- 1

注意:我添加as.character()只是为了避免因素问题。

于 2013-09-24T15:52:54.080 回答
0

作为贾斯汀在他的评论中的意思的一个例子,试试这个。

counties <- c("Nottinghamshire", "Derbyshire", "Leicestershire")
data_by_county <- replicate(
  length(counties), 
  matrix(0, 3, 4), 
  simplify = FALSE
)
names(data_by_county) <- counties
data_by_county
## $Nottinghamshire
##      [,1] [,2] [,3] [,4]
## [1,]    0    0    0    0
## [2,]    0    0    0    0
## [3,]    0    0    0    0
## 
## $Derbyshire
##      [,1] [,2] [,3] [,4]
## [1,]    0    0    0    0
## [2,]    0    0    0    0
## [3,]    0    0    0    0
## 
## $Leicestershire
##      [,1] [,2] [,3] [,4]
## [1,]    0    0    0    0
## [2,]    0    0    0    0
## [3,]    0    0    0    0
于 2013-09-24T15:53:22.590 回答