2

我有 100 个 *.csv 格式的数据集,名称相同但索引不同: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
 .....
 }

是否可以以某种方式编写一个 for 循环来运行函数本身 100 次,并同时在函数内部的第三个命令行中更改“myarray ...”的索引:例如 myarray1 在

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

在函数的第二次运行中变为 myarray2,依此类推,最多 100 次。

4

2 回答 2

5

你确定你不是那个意思read.csv(file, header=FALSE)

然后你就可以做

lapply(paste0("myarray", 1:100, ".csv"), Myfunc)
于 2013-10-23T00:20:49.120 回答
1

我认为使用这样的变量名不是一个好主意。将数据存储在列表中会更好。我建议以下方法

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

dataList <- lapply(files, FUN = Myfunc ) 

然后,您可以使用 dataList[[1]] 、 dataList[[2]] 等来引用各种数据帧。使用 list 比使用变量 list data.temp1、data.temp2 等要容易得多。

于 2013-10-23T01:15:51.160 回答