我通过将基于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()中,因为它具有“不正确的维数”,因为粘贴产生了一个向量而[j,i]正试图将其作为矩阵访问。我试图将我的粘贴包装在get(),eval()等中,但只是得到了不同的错误。
所以问题是如何让这个字符串返回为我可以用[j,i]访问的矩阵?
答案 0 :(得分: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()
只是为了避免因素问题。
答案 1 :(得分: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