【问题标题】:Creating a function in R for vector/matrix data在 R 中为向量/矩阵数据创建函数
【发布时间】:2014-07-24 10:40:31
【问题描述】:

我有一个包含 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 多个文件自动执行此操作?我认为我必须做一个功能,但问题是我不知道该怎么做。

有人可以帮帮我吗?

提前谢谢你。

【问题讨论】:

  • 你尝试过什么?我们无法为您分配任务...告诉我们您遇到问题的地方?
  • 感谢您的回复。我试图创建一个自动进程来调用 R 中的不同文件进行分析。所以我从这段代码开始: path
  • 将您的逻辑添加到您的问题中...这对其他人会有所帮助...
  • 谢谢,更新了所有问题,希望现在对其他成员清晰有用。
  • @user3872487。你说你在没有加载数据集的情况下做了analyse(a)。我无法理解这个问题。

标签: r function matrix vector


【解决方案1】:

如果你这样做,你就不需要你的第三行了:

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

【讨论】:

  • 非常感谢您的帮助,我做到了,但只分析了最后一个文件for(file in files){ i &lt;- analyse(file) } i
  • 您必须正确存储分析结果(见编辑)
  • 我不知道,但只分析第一个文件并重复 10 次。所以只分析第一个文件,而不分析其他文件。无论如何感谢您的努力。
  • 啊,抱歉,请参阅编辑。当没有数据可供测试时,就会出现这种情况。
  • 您的方法效果很好,谢谢。但是我收到了Warning messages: 1: In analysis[i] &lt;- analyse(files[i]) : number of items to replace is not a multiple of replacement length 你能帮忙吗?
【解决方案2】:

为什么不尝试一个简单的“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)}

【讨论】:

  • 感谢代码,for(i in 1:nrow(mm)) print(mm[i]) 一个一个显示所有文件,我可以使用这个analyse(mm[i]) 尝试但不起作用。如果我这样做analyse(mm[1]) 将起作用。我知道需要自定义该功能,但仍然不知道如何。
猜你喜欢
  • 2019-08-25
  • 2017-10-25
  • 1970-01-01
  • 2015-04-23
  • 1970-01-01
  • 2016-01-20
  • 2017-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多