R 如何根据文本文件的名称读取文本文件?

R 如何根据文本文件的名称读取文本文件?,r,text,R,Text,我在一个文件夹fm中有文本文件,该文件夹中每个站点有三个不同名称的测量值,但它们共享站点名称。这些名字的结构相似。我有另一个文件夹st,其中文件名的结构不同,但网站名包含在文件名的某个位置。我想在fm中绘制三个测量值,并在sm中绘制相应的文件(站点名称) 我可以将所有文件读取为: wgl= read.table("C:\\Users\\wg_ave.txt", sep ='' , header =TRUE) 我可以很容易地手动执行此操作,但由于我有几个文件,我想编写一个函数来读取相应的文

我在一个文件夹
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)
其他站点的循环


非常感谢您的帮助

您可以这样做:(非常原始的代码)

读取数据
如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)

site\u file\u name您可以这样做:(非常原始的代码)

读取数据
如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)

site\u file\u name您可以这样做:(非常原始的代码)

读取数据
如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)

site\u file\u name您可以这样做:(非常原始的代码)

读取数据
如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)

site\u file\u name通过站点名称进行循环可能更容易:

        #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)

[...]
        }
#设置您的目录
setwd(“C:\\Users\\fm”)
#您将获得目录中的文件列表

lista通过站点名称进行循环可能更容易:

        #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)

[...]
        }
#设置您的目录
setwd(“C:\\Users\\fm”)
#您将获得目录中的文件列表

lista通过站点名称进行循环可能更容易:

        #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)

[...]
        }
#设置您的目录
setwd(“C:\\Users\\fm”)
#您将获得目录中的文件列表

lista通过站点名称进行循环可能更容易:

        #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)

[...]
        }
#设置您的目录
setwd(“C:\\Users\\fm”)
#您将获得目录中的文件列表


listawhich使之更容易,因为您只需使用
site\u名称之类的内容从文件中提取站点名称,这使其更容易,因为您只需使用
site\u名称之类的内容从文件中提取站点名称,这使其更容易,因为您只需使用某些内容从文件中提取站点名称比如
site\u name,这使它更容易,因为你只需要从文件中提取类似
site\u name的站点名称,我不太理解你问题的这一步。我试着编辑我的答案,也许我更了解你对我答案的评论。我又编辑了!因此las步骤可以是:
setwd(“C:\\Users\\st”);st_filefiles是为了检查gre是否工作良好。如果它返回
字符(0)
则有问题<代码>我的站点[i]
是站点的名称吗
list.files()
为您提供感兴趣的文件
getwd()
是正确的目录吗?我不太理解你问题的这一步。我试着编辑我的答案,也许我更了解你对我答案的评论。我又编辑了!因此las步骤可以是:
setwd(“C:\\Users\\st”);st_filefiles是为了检查gre是否工作良好。如果它返回
字符(0)
则有问题<代码>我的站点[i]
是站点的名称吗
list.files()
为您提供感兴趣的文件
getwd()
是正确的目录吗?我不太理解你问题的这一步。我试着编辑我的答案,也许我更了解你对我答案的评论。我又编辑了!因此las步骤可以是:
setwd(“C:\\Users\\st”);st_filefiles是为了检查gre是否工作良好。如果它返回
字符(0)
则有问题<代码>我的站点[i]
是站点的名称吗
list.files()
为您提供感兴趣的文件
getwd()
是正确的目录吗?我不太理解你问题的这一步。我试着编辑我的答案,也许我更了解你对我答案的评论。我又编辑了!因此las步骤可以是:
setwd(“C:\\Users\\st”);st_filefiles是为了检查gre是否工作良好。如果它返回
字符(0)
则有问题<代码>我的站点[i]
是站点的名称吗
list.files()
为您提供感兴趣的文件
getwd()
是正确的目录吗?