r - 如何读取名称相似的文件?

标签 r

我在名为 mydata 的目录中有几个文本文件

我可以这样列出它们:

  dir1<- list.files ("C:\\mydata", "*.txt", full.names = TRUE)

文件的第一部分名为 bg16.txt bg3.txt …..bg(number).txt`。

文件的第二部分名为yt16.txt yt3.txt …..yt(number).txt`。

其余文件名为zj16.txt zj3.txt …..zj(number).txt

随机数,但最大值为 20,最小值为 1

我可以读取编号为 6 的文件并应用回归:

b=read.table("C:\\mydata\\bg6.txt",sep=""):
         > head(b)
                x
           1 0.29
           2 0.21
z=read.table("C:\\mydata\\zj6.txt",sep=""):
        > head(z)
               x
           1 0.10
           2 0.56
y=read.table("C:\\mydata\\yt6.txt",sep=""):
        > head(y)
              x
          1 0.56
          2 0.32
 names(b)="b";names(y)="y";names(z)="z"
 dt=cbind(b,y,z)
 res6=lm(y~ b + z, data=dt)

现在我可以手动对所有文件一一执行此操作,但这将花费大量时间。我想知道是否有任何函数可以匹配数字对应的文件: greb 相同数字中的三个文件 bg(number).txt, zj(number).txt, yt(number).txt

yt(number).txt读取为y,将zj(number).txt读取为z并且bg(number).txtb,然后像 6

那样找到回归

最佳答案

您可以拆分文件名以提取字母部分和数字部分。然后,您可以循环唯一的数字来获取每个分析的文件集。像这样的事情

# test data
dir1<-c("zj6.txt","yt6.txt","bg6.txt")

# Using this helper function... https://gist.github.com/MrFlick/10413321
nn<-do.call(rbind, regcapturedmatches(dir1,regexpr("(\\w+)(\\d+)\\.txt", dir1, perl=T)))

lapply(unique(nn[,2]), function(n) {
    b <- read.table(dir1[nn[,1]=="bg" & nn[,2]==n],sep="", col.names="b");  
    z <- read.table(dir1[nn[,1]=="zj" & nn[,2]==n],sep="", col.names="z");  
    y <- read.table(dir1[nn[,1]=="yt" & nn[,2]==n],sep="", col.names="y");
    lm(y~ b + z, data=cbind(b,z,y))
})

关于r - 如何读取名称相似的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34399862/

相关文章:

r - R 中的 HMM 包用法

r - 按组计算第二高累积值

r - Ubuntu 22.04 中 R impish repo 的问题 - impish-cran40

r - 按组计算标准偏差,不包括 R 中的当前观察值

Rscript - 摆脱 "WARNING: ignoring environment value of R_HOME"

r - 在ggplot中添加正交回归线

r - 泛化R%in%运算符以匹配元组

string - 修改字符串的函数

r - 分层/多级饼图

r - 用每条/组的观察数量注释 ggplot boxplot 方面