嗨,我有一个关于将 data.frames 列表转换为数组的快速问题(我更喜欢后一种格式进行绘图和操作)。
我有以下代码几乎可以工作,但我没有正确循环,想知道是否有人可以指出我做错了什么。
我想要做的是用我的data.frames列表中每个不同data.frames中的一列的值填充一个数组。
# list all the files in a directory
data.dir = "/data/output"
# list all the files to plot
files <- list.files(data.dir, full=TRUE, pattern="Fields_grid*")
# cat them together into one data frame
data <- lapply( files, read.csv, header=FALSE, skip=26)
# calc no. of files
nfiles <- length(files)
# set up an empty array to fill with data
z <- array( NA, dim=c(length(x), length(y), nfiles ))
# loop through all the data.frames/files
for (i in 1:length(nfiles)) {
# calc index's of lists
x <- sort(unique( data[[i]]$V3))
y <- sort(unique( data[[i]]$V4))
indx <- match( data[[i]]$V3, x)
indy <- match( data[[i]]$V4, y)
# fill array
z[ cbind( indx, indy, i)] <- data[[i]]$V5 }
我知道这是一个可怕的问题,因为我无法重现我得到的结果,但我希望你能理解我的问题。当我查看 z[,,1] 这包含数据但 z[,,2] 到 z[,,nfiles] 包含 NA (即我的循环没有工作)。我想这与索引有关,但我真的看不出我做错了什么。
再次为不透明的问题道歉,感谢您的关注!