如何使用;for loop";及;write.csv“;同时?
我有一个数组。它有纬度、经度、时间和价值。时间从1到300开始。这是时间=1的数组的一部分如何使用;for loop";及;write.csv“;同时?,r,csv,for-loop,R,Csv,For Loop,我有一个数组。它有纬度、经度、时间和价值。时间从1到300开始。这是时间=1的数组的一部分 myarray[,,1] lon lat -124.5 -123.5 -122.5 -121.5 -120.5 -119.5 -118.5 31.5 0 0 0 0 0 0 32.5 0 0 0 0 0 0 33.5 0 0 0 0 0 0 34.5
myarray[,,1]
lon
lat -124.5 -123.5 -122.5 -121.5 -120.5 -119.5 -118.5
31.5 0 0 0 0 0 0
32.5 0 0 0 0 0 0
33.5 0 0 0 0 0 0
34.5 0 0 0 0 0 0
35.5 0 0 0 0 0 0
36.5 0 0 0 768.1 0 126.2
37.5 0 0 0.2 0 811 212.1
38.5 0 0 3055 0 243.9 243.7
39.5 0 0 1.5 0.1 3 0
40.5 0.1 16.8 4.3 0.5 2.1 0
41.5 0.2 398.6 0.4 1.2 1.6 0
42.5 0 0.1 0.9 0.1 0.7 0
我想同时使用“write.csv”和“for loop”从数组中读取每个时间步(1到300)的数据,并将它们存储在以“I”作为索引的单个.csv文件中。我使用了这个命令,但似乎不起作用:
for (i in 1:300) write.csv(myarray[,,i],"myarray.i.csv")
有多种方法可以做到这一点:
paste('myarray', i, 'csv', sep = '.')
或:
我喜欢最后一个。一个方法是
for(1:300中的i){
write.table(myarray[,,i],file=”“myarray.i.csv”“,append=TRUE,sep=“,”,col.names=TRUE,row.names=TRUE)
}
这应该可以正常工作:
n = dim(mydata)[3]
for(i in 1:n) {
#unpack a 3D array
mat = mydata[,,i]
form = sprintf('subject_%s.csv', i)
write.csv(mat, file = form)
}
查看
“粘贴”
,了解如何构造一个字符串,其中i
被计算为介于1和300之间的当前值,而不是仅仅作为字母“i”。类似于粘贴(“myarray”,i,“csv”,sep=“.”)
@PaulHiemestra,sprintf
只是因为语法更简洁,还是因为其他原因?
n = dim(mydata)[3]
for(i in 1:n) {
#unpack a 3D array
mat = mydata[,,i]
form = sprintf('subject_%s.csv', i)
write.csv(mat, file = form)
}