2

*.csv 形式で 100 個のデータ セットがあり、同じ名前でインデックスが異なります: myarray1、myarray2、...、myarray100。これらのデータセットを読み取って何かを行う関数を作成しましたが、関数を 100 回実行したくありません。これは関数の主要部分です。

 Myfunc <- function(file){
 setwd("C:\\Users\\Desktop\\mydaya")
 data.temp1 <- read.csv("C:\\Users\\Desktop\\mydata\\myarray1.csv",header=FALSE)
 .......
 #core of function
 .....
 }

関数自体を100回実行するforループを何らかの方法で記述し、同時に関数内の3番目のコマンドラインで「myarray ...」のインデックスを変更することは可能ですか?たとえば、myarray1の

  data.temp <- read.csv("C:\\Users\\Desktop\\mydata\\myarray1.csv",header=FALSE) 

関数の 2 回目の実行で myarray2 になり、最大 100 回まで続きます。

4

2 に答える 2

1

そのような変数名を使用するのは良い考えではないと思います。リストにデータを保存する方がはるかに優れています。次の方法論をお勧めします

setwd("C:\\Users\\Desktop\\mydata")
files <- dir(pattern = 'myarray.*\\.csv')

dataList <- lapply(files, FUN = Myfunc ) 

その後、 dataList[[1]] 、 dataList[[2]] などを使用して、さまざまなデータフレームを参照できます。変数リスト data.temp1、data.temp2 などよりもリストを操作する方がはるかに簡単です。

于 2013-10-23T01:15:51.160 に答える