在R中为矢量/矩阵数据创建函数

时间:2014-07-24 10:40:31

标签: r function matrix vector

我有一个包含1000多个文件的文件夹。我想逐个检查文件,但我不想在R中加载这些文件。我所做的是创建一个矩阵,每行都有一个文件路径。通过使用文件路径,我可以得到我想要的。所以我现在做了什么。

我开始创建一个矩阵:

path <- "/Users/mike/Desktop/folder"
files <- list.files(path=path, pattern="*.txt")
dt <- matrix(paste("/Users/mike/Desktop/folder", files, sep="/"))

dt是矩阵,如果我调用第一行并分析它,我得到我想要的东西:

a <- dt[1,]
analyse(a)

我现在的问题是如何自动为100多个文件执行此操作?我认为我必须做一个功能,但问题是我不知道该怎么做。

有人可以帮我一把吗?

提前谢谢。

2 个答案:

答案 0 :(得分:0)

为什么不尝试一个简单的'for'循环:

mm = as.matrix(paste("file",1:10,".txt", sep=""))
mm
      [,1]        
 [1,] "file1.txt" 
 [2,] "file2.txt" 
 [3,] "file3.txt" 
 [4,] "file4.txt" 
 [5,] "file5.txt" 
 [6,] "file6.txt" 
 [7,] "file7.txt" 
 [8,] "file8.txt" 
 [9,] "file9.txt" 
[10,] "file10.txt"

for(i in 1:nrow(mm)) print(mm[i])
[1] "file1.txt"
[1] "file2.txt"
[1] "file3.txt"
[1] "file4.txt"
[1] "file5.txt"
[1] "file6.txt"
[1] "file7.txt"
[1] "file8.txt"
[1] "file9.txt"
[1] "file10.txt"

for(i in 1:nrow(mm)) {a = mm[i,]; analyze(a)}

答案 1 :(得分:0)

如果您这样做,则不需要第三行:

path <- "/Users/mike/Desktop/folder"
files <- list.files(path=path, pattern="*.txt", full.names =TRUE)

而且你不需要矩阵。你可以简单地写一下:

analysis <- list(NULL)
for(i in 1:length(files)){
   analysis[[i]] <- analyse(files[i])
}

analysis