Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用R将数据添加到三维阵列_R_Loops_Plyr_Multidimensional Array - Fatal编程技术网

使用R将数据添加到三维阵列

使用R将数据添加到三维阵列,r,loops,plyr,multidimensional-array,R,Loops,Plyr,Multidimensional Array,我在MATLAB中有一系列的函数需要转换成R。不幸的是,我对R不太了解 一个主要的障碍是将每个50x86069的csv 100文件加载到100、5086069阵列中 我将代码设置为打开/写入数组,然后作为循环的一部分读取每个50x86069 csv文件 l <- list.files(inputs) data.array<-array(0,dim=c(100,50,86069)) # loop through the input files to get the data load

我在MATLAB中有一系列的函数需要转换成R。不幸的是,我对R不太了解

一个主要的障碍是将每个50x86069的csv 100文件加载到100、5086069阵列中

我将代码设置为打开/写入数组,然后作为循环的一部分读取每个50x86069 csv文件

l <- list.files(inputs)
data.array<-array(0,dim=c(100,50,86069))

# loop through the input files to get the data loaded into an array
for(i in 1:5)
in.file <- read.csv(paste(inputs,"/",l[[i]], sep = ""))

    in.file = in.file[,-1] ## remove the first column
现在我需要将in.file放入data.arrayi,5086069

任何帮助都将不胜感激


谢谢-

你在找这样的东西吗

> ar1 <- array(1:9, dim = c(3, 3))
> ar1
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> ar2 <- array(10:18, dim = c(3, 3))
> ar3 <- array(19:27, dim = c(3, 3))
> ar.list <- list(ar1, ar2, ar3)
> bigarray <- array(NA, dim = c(3, 3, 3))
> for (i in 1:3) {
+     
+     intr <- vector("list", 3)
+     for(j in 1:3) {
+         intr[[j]] <- ar.list[[j]][i, ]
+     }
+     bigarray[, , i] <- do.call("rbind", intr)
+ }
> bigarray
, , 1

     [,1] [,2] [,3]
[1,]    1    4    7
[2,]   10   13   16
[3,]   19   22   25

, , 2

     [,1] [,2] [,3]
[1,]    2    5    8
[2,]   11   14   17
[3,]   20   23   26

, , 3

     [,1] [,2] [,3]
[1,]    3    6    9
[2,]   12   15   18
[3,]   21   24   27

你在找这样的东西吗

> ar1 <- array(1:9, dim = c(3, 3))
> ar1
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> ar2 <- array(10:18, dim = c(3, 3))
> ar3 <- array(19:27, dim = c(3, 3))
> ar.list <- list(ar1, ar2, ar3)
> bigarray <- array(NA, dim = c(3, 3, 3))
> for (i in 1:3) {
+     
+     intr <- vector("list", 3)
+     for(j in 1:3) {
+         intr[[j]] <- ar.list[[j]][i, ]
+     }
+     bigarray[, , i] <- do.call("rbind", intr)
+ }
> bigarray
, , 1

     [,1] [,2] [,3]
[1,]    1    4    7
[2,]   10   13   16
[3,]   19   22   25

, , 2

     [,1] [,2] [,3]
[1,]    2    5    8
[2,]   11   14   17
[3,]   20   23   26

, , 3

     [,1] [,2] [,3]
[1,]    3    6    9
[2,]   12   15   18
[3,]   21   24   27

您可以非常轻松地利用plyr软件包中的laply功能来获得所需的结果:

list_csv = list.files("/path/to/csv_files/", pattern = "csv")
muli_dim_array = laply(list_csv, read.csv)
laply函数将函数read.csv应用于list_csv,并生成一个数组作为结果,因此函数名为laply。有关plyr的更多详细信息,请参见哈德利的

对于可扩展为多维度>2的类rbind函数,请查看abind包中的abind函数。使用abind和Lappy的解决方案:

这消除了对plyr的需要,但依赖于abind:,并且可能在CPU时间和RAM方面表现出不同的性能。在这种情况下,也许一些基准可以提供一些指导,包括基于for循环的@Roman解决方案


最后,我非常喜欢plyr的简明扼要的语法,我将首先尝试该解决方案。

您可以非常轻松地利用plyr软件包中的laply函数来获得所需的结果:

list_csv = list.files("/path/to/csv_files/", pattern = "csv")
muli_dim_array = laply(list_csv, read.csv)
laply函数将函数read.csv应用于list_csv,并生成一个数组作为结果,因此函数名为laply。有关plyr的更多详细信息,请参见哈德利的

对于可扩展为多维度>2的类rbind函数,请查看abind包中的abind函数。使用abind和Lappy的解决方案:

这消除了对plyr的需要,但依赖于abind:,并且可能在CPU时间和RAM方面表现出不同的性能。在这种情况下,也许一些基准可以提供一些指导,包括基于for循环的@Roman解决方案


最后,我真的很喜欢plyr的简短、切中要害的语法,我会首先尝试这种解决方案。

一个可复制的示例将大有帮助。这个问题还没有解决吗?如果任何答案解决了您的问题,请在分数下将其标记为已回答绿色复选框,或提供有关所需输出的更多详细信息。可复制的示例将大有帮助。这个问题还没有解决吗?如果任何答案解决了您的问题,请在分数下将其标记为已回答绿色复选框,或提供有关所需输出的更多详细信息。我更喜欢laply版本的语法,虽然laply可能会稍微慢一点,占用更多内存……而且我认为abind函数在您的情况下会非常有效。@PaulHiemstra我认为我们首先需要确定这是期望的结果:感谢关于abind的提示,我知道我遗漏了一些东西。两种解决方案都有效,但Roman的解决方案对于我正在加载的大型数据集更有效。谢谢你的帮助!就语法而言,我更喜欢laply版本,尽管laply可能会慢一点,占用更多内存……而且我认为abind函数在您的情况下会运行得非常好。@PaulHiemstra我认为我们首先需要确定这是期望的结果:感谢关于abind的提示,我知道我遗漏了一些东西。两种解决方案都有效,但Roman的解决方案对于我正在加载的大型数据集更有效。谢谢你的帮助!保罗和罗曼-非常感谢你的洞察力。虽然两种解决方案都很有效,但我认为Roman的可能更适合我的需要。我的一个问题是使用Roman的方法,如何从每个输入ar变量中删除第一列?第二个问题是,输入数据需要大于1的值才能为1,比如ar[ar>0]Paul和Roman,非常感谢您的见解。虽然两种解决方案都很有效,但我认为Roman的可能更适合我的需要。我的一个问题是使用Roman的方法,如何从每个输入ar变量中删除第一列?第二个问题是,输入数据需要大于1的值才能为1,类似于ar[ar>0]