我在一个文件夹fm
中有文本文件,此文件夹为每个网站提供三个不同名称的测量,但它们共享该网站的名称。名称的结构是相似的。我有另一个文件夹st
,其中文件名的结构不同,但网站的名称包含在文件名的某处。我想在fm
中使用sm
中的相应文件(站点名称)绘制三个测量值。
我可以将所有文件读为:
wgl= read.table("C:\\Users\\wg_ave.txt", sep ='' , header =TRUE)
我可以非常轻松地手动执行此操作,但由于我有几个文件,我想编写一个函数来读取相应的文件,并对文件夹中的所有文件执行此操作。
First step:Search in folder `fm`files with the same site name
Wgl: l_name of the site
Wgk: k_name of the site
Wger: er_name of the site
阅读它们:
Wgl= read.table("C:\\Users\\wg_ave.txt", sep ='' , header =TRUE)
etc….
在文件夹sm
中搜索此网站的名称并阅读
wgsitu= read.table("C:\\Users\\wlkave.txt", sep ='' , header =TRUE)
进行计算,绘图,无论
cor(Wgl$va,wgsitu$fg)
cor(Wgk$va,wgsitu$fg)
cor(Wger$va,wgsitu$fg)
其他网站的循环
我感谢任何帮助
答案 0 :(得分:2)
您可以这样做:(非常原始代码)
files <- list.files("path-to-folder/fm", pattern = "Your File-Pattern", full.names = TRUE)
版本A:
如果网站名称保存在文件列中:
Wgl <- lapply(files, read.table, sep = '', header = TRUE)
然后你提取网站名称
site_names <- sapply(Wgl, function(x) {x$sitename_column})
(这假设所有文件都包含包含站点名称的相同列)
版本B:
如果网站名称是文件名files
site_names <- gsub("pattern of pre and suffixes", files)
阅读数据
正如在版本A中所做的那样
site_file_names <- list.files("path-to-folder/sm", pattern = paste0(site_names, collapse = "|"), full.names = TRUE)
dat <- lapply(files, read.table, sep = '', header = TRUE)
答案 1 :(得分:1)
通过网站名称循环可能更容易:
#set your directory
setwd("C:\\Users\\fm")
#you get the list of files in the directory
lista<-list.files()
#example (don't run)
#lista<-c("l_new","k_new","er_new","l_old","k_old","er_old")
# I want a loop for each site. Suppose we have 2 sites old and new
my_site<-c("new","old")
for (i in 1:length(mysite)) {
setwd("C:\\Users\\fm")
#get the 3 files of i site
files<-grep(my_site[i],lista,fixed=TRUE, value=TRUE)
Wgl<- read.table(paste("C:\\Users\\fm\\","l_",my_site[i],".txt",sep="") , sep ='' , header =TRUE)
Wgk<-read.table(paste("C:\\Users\\fm\\","k_",my_site[i],".txt",sep="") , sep ='' , header =TRUE)
Wger<-read.table(paste("C:\\Users\\fm\\","er_",my_site[i],".txt",sep="") , sep ='' , header =TRUE)
setwd("C:\\Users\\st")
Wgl_file<-grep(wgl,list.files(),fixed=TRUE, value=TRUE)
Wgl_site<-read.table(paste("C:\\Users\\st\\",Wgl_file,sep="") , sep ='' , header =TRUE)
Wgk_file<-grep(Wgk,list.files(),fixed=TRUE, value=TRUE)
Wgk_site<-read.table(paste("C:\\Users\\st\\",Wgk_file,sep="") , sep ='' , header =TRUE)
Wger_file<-grep(Wger,list.files(),fixed=TRUE, value=TRUE)
Wger_site<-read.table(paste("C:\\Users\\st\\", Wger_file,sep="") , sep ='' , header =TRUE)
[...]
}