gpt4 book ai didi

R将列表转换为数组

转载 作者:行者123 更新时间:2023-12-04 05:25:19 25 4
gpt4 key购买 nike

嗨,我有一个关于将 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 (即我的循环没有工作)。我想它与索引有关,但我真的看不出我做错了什么。

再次为一个不透明的问题道歉,并感谢您的浏览!

最佳答案

问题出在你的循环上:

for (i in 1:length(nfiles)) { [...]

在这里, length(nfiles)1所以你的循环只针对 i 运行等于 1 .

相反,你的意思是
for (i in 1:nfiles) { [...]


for (i in seq_len(nfiles)) { [...]


for (i in seq_along(files)) { [...]

关于R将列表转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13262431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com