【发布时间】:2019-04-26 13:06:53
【问题描述】:
我想自动执行此操作,而不是输入 1500 次。
n1 <- spei[sp_latong[[1]]$lon_indx,sp_latong[[1]]$lat_indx,ind_time]
.
.
.
n1500 <- spei[
sp_latong[[1500]]$lon_indx,
sp_latong[[1500]]$lat_indx,
ind_time ]
### create final data
dat1 <- cbind(n1,n2,...,n1500)
我尝试使用循环,我有以下代码:
t <- 0
for(i in 1: length(sp_latong){
t[[i]] < -
spei[sp_latong[[i]]$lon_indx,sp_latong[[i]]$lat_indx,ind_time]
}
我收到一条错误消息
spei[sp_latong[[i]]$lon_indx, sp_latong[[i]]$lat_indx] 中的错误: 维数不正确。
我不得不将 t[[i]] 更改为 t[i] 和 t,我得到了同样的错误信息。任何建议将不胜感激。
注意:spei 是一个大数组 sp_latong 是列表
【问题讨论】:
-
您可能会使用
applyfamily 或purrrlibrary 来实现。你能给我们举一个你的数据的例子吗?对小样本使用dput(data)或dput(head(df))。 -
@Dave2e 我试过了,但收到了 50 条警告消息。这是 t[i]
-
您的代码中有
< -吗?你想要<- -
我按照建议使用向量命令,但收到错误消息 In t[i]
-
您上面提到的错误是指
spei[sp_latong[[i]]$lon_indx, sp_latong[[i]]$lat_indx, ind_time]这一行。通过添加“ind_time”,您已经为该数组指定了第三维。如果不查看您的数据样本,就很难理解您的意图。