Arrays 数组中的维数和下标数不正确
我不熟悉使用R,因此我的问题可能很简单,但尽管如此,我还是花了很多时间试图找出我做错了什么,但都没有用。在过去的一周里,我在这个网站上找到了很多帮助,通过搜索其他问题/答案(谢谢!),但是作为一个新手,通常很难理解其他人的代码 我正在尝试构建一个由多个数据文件组成的三维数组,每个数据文件都具有相同的维度57x57Arrays 数组中的维数和下标数不正确,arrays,r,multidimensional-array,dimensions,Arrays,R,Multidimensional Array,Dimensions,我不熟悉使用R,因此我的问题可能很简单,但尽管如此,我还是花了很多时间试图找出我做错了什么,但都没有用。在过去的一周里,我在这个网站上找到了很多帮助,通过搜索其他问题/答案(谢谢!),但是作为一个新手,通常很难理解其他人的代码 我正在尝试构建一个由多个数据文件组成的三维数组,每个数据文件都具有相同的维度57x57 # read in 100 files Files = lapply(Sys.glob('File*.txt'), read.table, sep='\t', as.is=TRUE)
# read in 100 files
Files = lapply(Sys.glob('File*.txt'), read.table, sep='\t', as.is=TRUE)
# convert to dataframes
Files = lapply(Files[1:100], as.data.frame)
# check dimensions of first file (it's the same for all)
dim(Files[[1]])
[1] 57 57
# build empty array
Array = array(dim=c(57,57,100))
# read in the first data frame
Array[,,1] = Files[1]
# read in the second data frame
Array[,,2] = Files[2]
Error in Array[, , 2] = Files[2] : incorrect number of subscripts
# if I check...
Array[,,1] = Files[1]
Error in Array[, , 1] : incorrect number of dimensions
# The same thing happens when I do it in a loop:
x = 0
for(i in 1:100){
Array[,,x+1] = Files[[i]]
x = x + 1
}
Error in Array[, , 1] = Files[[1]] :
incorrect number of subscripts
在执行分配之前,您需要将数据帧转换为矩阵:
l <- list(data.frame(x=1:2, y=3:4), data.frame(x=5:6, y=7:8))
arr <- array(dim=c(2, 2, 2))
arr[,,1] <- as.matrix(l[[1]])
arr[,,2] <- as.matrix(l[[2]])
arr
# , , 1
#
# [,1] [,2]
# [1,] 1 3
# [2,] 2 4
#
# , , 2
#
# [,1] [,2]
# [1,] 5 7
# [2,] 6 8
数据帧不能像您很容易看到的那样是数组的切片。如果您想要一个57x57x3阵列,只需制作一个即可。但是请停止使用术语“dataframe”调用数组片。如果您创建了一个或三个测试对象(比如维度7x7),并要求填充一个7x7x3数组,则更容易说明。
arr2 <- array(unlist(lapply(l, as.matrix)), dim=c(dim(l[[1]]), length(l)))
all.equal(arr, arr2)
# [1] TRUE