使用readOGR读取多个文件并输出到R中的不同文件的循环
我在文件夹中有一堆.gpx文件,我试图用readOGR读取它们,并为每个.gpx文件获取内存中的一个文件。这是什么不工作:使用readOGR读取多个文件并输出到R中的不同文件的循环
myfiles <- list.files(".", pattern = "*.gpx") for (i in 1:length(myfiles)) {
temp.gpx <- readOGR(dsn = myfiles[i], layer="tracks")
temp.gpx
}
这是做的是读取所有的文件,然后将它们写入temp.gpx。我想要做的是读取它们并将它们写入,例如,temp1.gpx,temp2.gpx等。
不幸的是,我对R很新,我不知道如何做到这一点。我试着在网上查找,发现一些特定于非空间文件的解决方案,并以这种或那种方式搞砸了这些文件。
有谁知道如何做到这一点?
谢谢!
回答:
您可以使用assign()
使用其他变量来产生变量名:
myfiles <- list.files(".",pattern = "*.gpx") for (i in 1:length(myfiles)) {
varName <- paste0("temp", i, ".gpx")
assign(varName, readOGR(dsn = myfiles[i], layer="tracks"))
}
这将创建一个循环的每次迭代变量字符varName
这将对价值temp1.gpx
,temp2.gpx
等:
## i <- 1 varName <- paste0("temp", i, ".gpx")
## [1] "temp1.gpx"
assign()
然后将readOGR()
的结果分配给当前的temp*.gpx
变量。
回答:
在大多数情况下,使用assign
是一个非常糟糕的选择。尽管斯图亚特艾伦正确回答了你的问题,但你很可能会问错误的问题。
你试图做的是典型的初学者错误。使用这种方法,最终会得到很多难以操作的命名对象,因为您需要通过名称来引用它们,例如,很难在循环中使用这些对象。
相反,你或许应该做一个清单,所有对象:
gpx <- lapply(myfiles, function(f) { readOGR(dsn=f, layer="tracks") }
)
并把它从那里。
以上是 使用readOGR读取多个文件并输出到R中的不同文件的循环 的全部内容, 来源链接: utcz.com/qa/260684.html