0

私はRに比較的慣れていませんが、これまで効果的なグーグルで管理してきました。残念ながら、Google に関する現在の問題を解決するのに苦労しています。

編集したいファイルが多数あり、別の形式で保存します。テーブルには、緯度、経度、平均気温のデータが約 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)

以下はデータ構造の例です (最初の 2 列は経度と緯度に対応し、残りは 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))
}

その後、プロセスは次のメッセージで失敗します。

「i」は正しいオブジェクトではないと推測できますが、そこに何を入れるべきかを理解できないようです。

私は write.csv 部分を自動化する試みを始めていないので、その点に関するアドバイスをいただければ幸いです。

前もって感謝します、

4

1 に答える 1

0

エラーは、という名前の変数がないことを示していますV1。これは本当です。read.fwfを返しますdata.frame。またはが保持V1する の列です。data.frameitest

の列を使用するにはdata.framewith関数を使用するか、$構文を使用して の列にアクセスできますdata.frame

あなたのwith場合、構文はおそらくもっと簡単です:

subset(i, with(i, V1 > -135 & V1 < -55 &  V2 < 80 & V2 > 55, select=c(V1,V2,V8,V9,V10)))

変数から各列に直接アクセスするには、次の構文を使用します。

i$V1
于 2013-05-23T22:28:14.080 に答える