无法在 R 中导出所需的结果
Not able to export the desired results in R
我有一个地理区域的纬度和经度方形网格。但是我只知道这个网格的 4 个角的纬度和经度值。使用这些我需要计算所有十字线的经纬度值。所以,我在R中单独制作了一个嵌套循环程序,用于纬度和经度。
tllong<-67.481961
sink("output_long.txt")
for (i in c(1:11447)) {
for (j in c(1:10335)) {
tllong<- 67.481961 + (j-1)*0.0030769
print(tllong)
}
}
sink()
以上程序是计算经度的。 tllong 是网格左上角的经度值。 11447是纬度数,10335是经度数
同样,我创建了一个计算纬度的程序。
tllat<-36.348639
sink("output_lat_again.txt")
for (i in c(1:11447)) {
for (j in c(1:10335)) {
print(tllat)
}
tllat<- tllat - (i-1)*0.002508
}
sink()
tllat是左上角网格方块的纬度值。
正如您所见,循环首先计算第一行的所有经纬度值,然后转到第二行,然后是第三行,依此类推。但是,当我获得两个程序的导出文本文件时,我得到一个包含所有值的列。这对我来说用处不大。我尝试使用 sink("output_long.xlsx") 以 xlsx 格式导出 R 的输出结果,但是当我得到 excel 文件(经过 4-5 小时的持续 运行 循环)我无法打开它。错误消息显示文件已损坏或文件格式不同。我已经尝试了 3-4 次,但没有成功。
那么我如何将这两个程序的结果导出到 excel 文件中,这样我就不会在单个列中获得所有值,而是以适当的矩阵形式(即 lat 的值,每个单元格中的 long 对应于 lat 的值,long 在网格的相应十字线中)。
此外,如果有人能告诉我如何 运行 这两个程序一起使用,这样我就可以在同一个文件中的单个 运行 中获取经纬度值,那就太好了。
您似乎想要创建 10335*11447=118304745 对 lat/lon 值。这是一个相当大的数字。那是对的吗?但是,我将展示应用于较小示例的过程。试试这个:
#setting the values of parameters
tllong<-67.481961
tllat<-36.348639
deltalong<-0.0030769
deltalat<-0.002508
#small example: you can set the following to the real values
nlong<-10
nlat<-10
#create vectors of values without loops
lat<-seq(tllat,by=deltalat,length.out=nlat)
lon<-seq(tllong,by=deltalong,length.out=nlong)
#now we build every possible pair of lat/lon values
latlong<-expand.grid(lon=lon,lat=lat)
#we export it to a csv file
write.csv(latlong,"somefile.csv",row.names=FALSE,quote=FALSE)
最后,将创建 somefile.csv
。请记住,使用您的值,创建的文件将非常大。
我有一个地理区域的纬度和经度方形网格。但是我只知道这个网格的 4 个角的纬度和经度值。使用这些我需要计算所有十字线的经纬度值。所以,我在R中单独制作了一个嵌套循环程序,用于纬度和经度。
tllong<-67.481961
sink("output_long.txt")
for (i in c(1:11447)) {
for (j in c(1:10335)) {
tllong<- 67.481961 + (j-1)*0.0030769
print(tllong)
}
}
sink()
以上程序是计算经度的。 tllong 是网格左上角的经度值。 11447是纬度数,10335是经度数
同样,我创建了一个计算纬度的程序。
tllat<-36.348639
sink("output_lat_again.txt")
for (i in c(1:11447)) {
for (j in c(1:10335)) {
print(tllat)
}
tllat<- tllat - (i-1)*0.002508
}
sink()
tllat是左上角网格方块的纬度值。
正如您所见,循环首先计算第一行的所有经纬度值,然后转到第二行,然后是第三行,依此类推。但是,当我获得两个程序的导出文本文件时,我得到一个包含所有值的列。这对我来说用处不大。我尝试使用 sink("output_long.xlsx") 以 xlsx 格式导出 R 的输出结果,但是当我得到 excel 文件(经过 4-5 小时的持续 运行 循环)我无法打开它。错误消息显示文件已损坏或文件格式不同。我已经尝试了 3-4 次,但没有成功。
那么我如何将这两个程序的结果导出到 excel 文件中,这样我就不会在单个列中获得所有值,而是以适当的矩阵形式(即 lat 的值,每个单元格中的 long 对应于 lat 的值,long 在网格的相应十字线中)。
此外,如果有人能告诉我如何 运行 这两个程序一起使用,这样我就可以在同一个文件中的单个 运行 中获取经纬度值,那就太好了。
您似乎想要创建 10335*11447=118304745 对 lat/lon 值。这是一个相当大的数字。那是对的吗?但是,我将展示应用于较小示例的过程。试试这个:
#setting the values of parameters
tllong<-67.481961
tllat<-36.348639
deltalong<-0.0030769
deltalat<-0.002508
#small example: you can set the following to the real values
nlong<-10
nlat<-10
#create vectors of values without loops
lat<-seq(tllat,by=deltalat,length.out=nlat)
lon<-seq(tllong,by=deltalong,length.out=nlong)
#now we build every possible pair of lat/lon values
latlong<-expand.grid(lon=lon,lat=lat)
#we export it to a csv file
write.csv(latlong,"somefile.csv",row.names=FALSE,quote=FALSE)
最后,将创建 somefile.csv
。请记住,使用您的值,创建的文件将非常大。