【发布时间】:2015-10-28 11:44:46
【问题描述】:
我已经问过类似的question,但是输入数据的维度不同,我没有得到较大的数组填充较小的矩阵或数组。这里有一些显示我的结构的基本示例数据:
dfList <- list(data.frame(CNTRY = c("B", "C", "D"), Value=c(3,1,4)),
data.frame(CNTRY = c("A", "B", "E"),Value=c(3,5,15)))
names(dfList) <- c("111.2000", "112.2000")
输入数据是一个 >1000 dfs 的列表。我把它变成了一个矩阵列表,第一列作为行名。这里:
dfMATRIX <- lapply(dfList, function(x) {
m <- as.matrix(x[,-1])
rownames(m) <- x[,1]
colnames(m) <- "Value"
m
})
我尝试将这个矩阵列表填充到一个数组中,如我以前的问题中所示。这里:
loadandinstall("abind")
CNTRY <- c("A", "B", "C", "D", "E")
full_dflist <- array(dim=c(length(CNTRY),1,length(dfMATRIX)))
dimnames(full_dflist) <- list(CNTRY, "Value", names(dfMATRIX))
for(i in seq_along(dfMATRIX)){
afill(full_dflist[, , i], local= TRUE ) <- dfMATRIX[[i]]
}
给出错误信息:
Error in `afill<-.default`(`*tmp*`, local = TRUE, value = c(3, 1, 4)) :
does not make sense to have more dims in value than x
有什么想法吗?
我还尝试在我之前的问题中使用acast 和array() 而不是dfMATRIX <- lapply... 命令。我会假设我的full_dflist-array 的第二维(对不起命名:))是错误的,但我不知道如何编写输入。非常感谢您的想法。
Edit2:对不起,我放错了输出:)这是我的新预期输出:
$`111.2000`
Value
A NA
B 3
C 1
D 4
E NA
$`112.2000`
Value
A 3
B 5
C NA
D NA
E 15
【问题讨论】: