2014-07-24 76 views
-2

我有一个包含1000多个文件的文件夹。我想逐个检查文件,但我不想在R中加载这些文件。我所做的是创建一个矩阵,并在每一行中创建一个文件路径。通过使用文件路径,我可以得到我想要的。所以我现在做了什么。在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 +文件?我认为我必须做一个功能,但问题是我不知道如何去做。

有人能帮我一下吗?

预先感谢您。

+0

你试过了什么?我们不能为你做任务......向我们展示你在哪里遇到问题? – vrajs5

+0

感谢您的回复。我试图创建一个自动的过程来调用R中的不同文件进行分析。所以我开始用这个代码:path < - “/ Users/mike/Desktop/folder” files < - list.files(path = path,pattern =“* .txt”) datafile < - matrix(paste(“/用户/ mike /桌面/文件夹“,文件,sep =”/“)) a < - datafile [1,] analyze(a) 现在我打电话给第一行,工作正常,但我怎么打电话所有的行自动一个接一个? 谢谢 – klo

+0

为您的问题添加您的逻辑...这将有助于其他人... – vrajs5

回答

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 
+0

非常感谢您的帮助,我做到了,但只分析最后一个文件 '为(在文件的文件){ 我< - 分析(文件) } i' – klo

+0

你必须存储您的分析结果正确(见编辑) – nnn

+0

我不知道,但得到只分析第一个文件,并重复10次。所以只是第一个文件分析,而不是其他人。无论如何感谢你的努力。 – klo

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)} 
+0

感谢您的代码,'for(i in 1:nrow(mm))print(mm [i])'show all files一个接一个,我可以用这个'分析(mm [i])'试过但不行。如果我做'分析(mm [1])'会起作用。我知道需要定制该功能,但仍不知道如何。 – klo

+0

你的代码作品谢谢! – klo