我对 R 比较陌生,但到目前为止,我已经通过有效的谷歌搜索进行了管理。不幸的是,我很难解决我目前与谷歌有关的问题。
我有大量文件要编辑并另存为其他格式。这些表格包含约 80,000 行中的纬度、经度和平均温度数据。我需要做的是只选择与我的学习密切相关的地区和月份。虽然我可以很容易地为单个文件执行此操作,但我似乎无法自动化我拥有的 111 个文件的过程(我想将它们分开,因为它对于下游 GIS 应用程序会更容易)。
对于单个文件,这是适合我的过程:
test<-read.fwf("air_temp.1900", widths = c(8,8,8,8,8,8,8,8,8,8,8,8,8,8), header=F)
test1<-subset(test, V1 > -135 & V1< -55 & V2 < 80 & V2 > 55,
select=c("V1","V2","V8","V9","V10"))
write.csv(test1.csv,file="test1",row.names=F)
这是数据结构的一个示例(前两列对应经度和纬度,其余列对应于 1 月至 12 月的月平均温度):
> test[1:3,]
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14
1 -179.75 71.25 -26.7 -19.5 -22.5 -22.3 -8.0 -0.6 2.5 0.3 -2.6 -9.6 -12.6 -23.6
2 -179.75 68.75 -28.5 -21.3 -24.4 -24.4 -8.0 0.0 4.0 0.8 -2.8 -11.1 -14.1 -26.5
3 -179.75 68.25 -29.2 -22.0 -25.2 -25.1 -8.9 -0.1 3.9 0.7 -3.4 -12.0 -14.9 -27.5
这是我尝试自动化该过程的尝试,尽管它显然存在缺陷:
names<-list.files(pattern='air_temp.*')
names1<-substr(names,1,13)
for(i in names2){
filepath <- file.path("...Climate.geo.udel.edu/",paste(i))
assign(i, read.fwf(filepath, widths = c(8,8,8,8,8,8,8,8,8,8,8,8,8,8), header=F))
#up to here works fine, I can automate the loading of these files into R
#but editing and exporting them doesn't seem to work
subset(i, V1 > -135 & V1 < -55 & V2 < 80 & V2 > 55, select=c(V1,V2,V8,V9,V10))
}
然后该过程失败,并显示以下消息:“subset.default(i, V1 > -135 & V1 < -55 & V2 < 80 & V2 > 55, select = c(V1, : object 'V1' not found) 中的错误”
我可以推断出“i”不是正确的对象,但我似乎无法弄清楚我应该在那里放什么。
我什至还没有开始尝试自动化 write.csv 部分,所以任何关于这方面的建议都将不胜感激。
先感谢您,