【问题标题】:for-loop R: seq(along=x)for-loop R: seq(along=x)
【发布时间】:2015-05-06 10:54:54
【问题描述】:

如何告诉 R 在 for 循环中读取向量 rec 中的值(例如 159 472 581 1236 ...)而不是向量的长度 (1:257) ?

我的代码是:

rec=int [1:257] 159 472 581 1236 1295 1491 ....

lon=matrix(data=NA, nrow=length(rec), ncol=1)
lat=matrix(data=NA, nrow=length(rec), ncol=1)

for (i in seq(along=rec)){  
lon[i]<-get.var.ncdf(nc, "lon", c(i,1), c(1,1)) 
}
for (i in seq(along=rec)){
lat[i]<-get.var.ncdf(nc, "lat", c(i, 1), c(1,1))
}
coordstart<-cbind(lon, lat)

代码有效,但计算出的 lonlat 值与 i 1:257 相关。我需要它们与向量rec 的实际值相关。

【问题讨论】:

  • 这条线应该做什么? rec=int [1:257] 159 472 581 1236 1295 1491 ....
  • 这一行不做任何事情。它是我想在循环中使用的向量。我只是将其粘贴在那里以提供所有信息
  • 也许你不需要for loop,这行得通吗:lon &lt;- get.var.ncdf(nc, "lon", c(rec,1), c(1,1))
  • 我猜你想在 rec 处提取 nc 值并将其写入位置 i:for (i in seq_along(rec)){ r = rec[i]; lon[i]&lt;-get.var.ncdf(nc, "lon", c(r, 1), (1,1)) }
  • @koekenbakker 非常感谢!这样就行了。

标签: r for-loop vector


【解决方案1】:

你可以在R中直接指定这样的向量。试试这个

    for (i in rec){  
lon[i]<-get.var.ncdf(nc, "lon", c(i,1), c(1,1)) 
}

此代码对我有用。

【讨论】:

  • 这会计算一个包含 29933 个值的向量,其中 29676 个是 NA。我想避免所有这些 NA。这可能吗?
  • @sue 也许for (i in rec[!is.na(rec)])?
  • 仍然返回一个包含所有 NA 的向量
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-02
  • 1970-01-01
  • 2019-12-13
相关资源
最近更新 更多