【发布时间】:2014-04-24 12:34:51
【问题描述】:
我需要对矩阵进行子集化并将结果保留为矩阵,即我想对 2 个不同矩阵中值介于 2 和 8 之间的所有列进行子集化,然后根据结果对第三个矩阵进行子集化。前两个矩阵是纬度和经度值。我是这样尝试的:
Lond<-c(2,9)
Latd<-c(2,9)
Newlon <-which(Lon > Lond[1] & Lon < Lond[2])
Newlat <-which(Lat > Latd[1] & Lat < Latd[2])
我尝试的另一个选项是
index <- which(lat >= 2 & lat <= 9 & lon >= 2 & lon <= 9)
这对所有单元格编号进行了子集化,但我希望它保留为行和列的网格或矩阵,因为它返回一个线性数组。我需要它只保留具有这些值的行和列作为矩阵,这样我就可以对另一个具有实际值的矩阵“数据”进行子集化,然后我可以使用 .
New<-Data[Newlon,Newlat]
该文件在此处可用: Link
因此使用 rhdf5 从 hdf5 文件中取出的文件
lon<-h5read ("M1.he5","HDFEOS/SWATHS/ColumnAmountNO2/Geolocation Fields/Longitude")
lat<-h5read ("M1.he5","HDFEOS/SWATHS/ColumnAmountNO2/Geolocation Fields/Latitude")
Data<-h5read ("M1.he5","HDFEOS/SWATHS/ColumnAmountNO2/Data Fields/ColumnAmountNO2Trop")
我该怎么做?
【问题讨论】:
-
我不确定,但您可能只想要
which的“arr.ind = T”参数? -
嗨,Alexis,我不明白你所说的“arr.ind=T”是什么意思
-
您能否提供一个初始矩阵的小样本,以便其他人可以试用?我们没有
Lon、Lat、lon或lat,因此我们实际上无法重现您正在做的事情。 -
查看
?which以查看帮助信息,包括对arr.ind参数的解释。 -
我认为你想要做什么有点令人困惑。为简单起见,一个显示预期输出的小示例将非常有帮助。似乎使用一个小例子而不是下载所有数据会更清楚。为此,这里有一些
lon和lat的示例数据,您可以使用它们来说明问题:set.seed(1);lon <- matrix(runif(100,-15,15),ncol=10);和lat <- matrix(runif(100,-15,15),ncol=10)