0

forループを使用して複数のデータフレームを読み取ろうとしており、データフレームに変数名を割り当てようとしています。すべてのデータフレームに同じ列名を付けたい。

私が使用した for ループは次のとおりです。

for (i in 1:15){
  assign(paste0("watersurf",i),read.table(paste0("D:/water-surf/","water-surf-",i,".dat"),header=F,skip=1,sep=""))
}

上記のコードを使用して、15 個のデータ フレームを作成できました。すべてのデータ フレームに名前を割り当てるにはどうすればよいですか? 次のコードを使用しました。

for (i in 1:15){
  assign(paste0("watersurf",i),read.table(paste0("D:/water-surf/","water-surf-",i,".dat"),header=F,skip=1,sep=""))
  names(paste0("watersurf",i))<- c("X","Y","Z")
}

次のようなエラーが発生しました。

Error in names(paste("watersurf", i)) <- c("X", "Y", "Z") : 
  target of assignment expands to non-language object

上記のエラーを取り除く方法や、すべてのデータフレームの列の名前を一度に変更する効率的な方法を誰かが提案できますか? もちろん、名前を個別に割り当てることもできますが、シンプルでエレガントなソリューションを探しています。

私が取り組んでいる 1 つの csv ファイルのサンプル データは次のとおりです。

* , Water Levels, Depth Averaged
   407902.775  3437067.475        0.331
   406719.675  3436930.750        0.327
   405754.025  3436197.650        0.325
   404614.375  3435972.650        0.322
   404273.050  3434775.450        0.321
   403347.425  3433981.900        0.320
   404118.025  3433179.975        0.318
   404798.100  3432441.075        0.317
   403701.000  3432521.400        0.317
   402682.750  3432727.350        0.316
   402835.400  3431561.150        0.315
   403957.775  3431203.900        0.313
   405159.775  3431120.150        0.309
   405918.250  3430149.075        0.307
   405902.700  3428908.500        0.306
   405051.075  3428616.450        0.306
   404963.950  3427407.225        0.304
   405570.675  3426347.950        0.304
   406407.800  3425479.275        0.304
   406799.425  3424354.200        0.303
   407590.800  3423501.200        0.302
   408119.375  3422490.975        0.301
   408033.050  3421648.575        0.300
   407924.425  3420566.700        0.300
4

2 に答える 2

2

誰かがより良い解決策を思い付くまで、最初のループを次のように変更します。

for (i in 1:15){
  Data <- read.table(paste0("D:/water-surf/","water-surf-",i,".dat"),header=F,skip=1))
  names(Data) <- c("X", "Y", "Z")
  assign(paste0("watersurf", i), Data)
}
于 2013-08-19T17:56:46.073 に答える