r - 在 R 中,从列表中的文件夹中读取文件,并通过文件名(不带文件格式 (.fa))分配列表元素名称

标签 r lapply

我正在制作 fasta 文件的列表,并从文件夹中读取它们。文件名应指定为 list element 名称,不带 .fa 文件格式。

我正在使用list.files来评估目录“Folder”中的文件

filenames <- list.files("Folder",pattern = ".fa",full.names = T)

然后读取 fasta 文件。

list <- lapply(filenames, FUN=readDNAStringSet, use.names=T, format="fasta")

我发现此代码使用 setNames 来定义 list 元素名称。

list<- setNames(list, substr(list.files("Folder", pattern=".fa"), 1,15 ))

但是我的文件名有不同的长度(使得很难使用 START 到 STOP (,1, 15)),为了进一步处理,我想去掉 。发

文件看起来像:

Gene1.fa
Gene12.fa
Gene22a.fa
Gene123abc.fa

我正在使用 DECIPHER 但我猜这是一个更基本的 R 问题?

最佳答案

为了删除末尾的子字符串,我们也可以使用substr,但请确保从末尾而不是从开头开始索引第一个/最后一个,因为它是变化的

v1 <- list.files("Folder", pattern=".fa")
substring(v1, first  = 1, last = nchar(v1) -3)
#[1] "Gene1"      "Gene12"     "Gene22a"    "Gene123abc"

或者另一个选项是 sub 来匹配点 (. - 匹配任何字符的元字符,因此转义 (\\) 它获取字面意思),然后在字符串末尾 ($) 处添加 'fa' 并将其替换为空白 ("")

sub("\\.fa$", "", v1)

关于r - 在 R 中,从列表中的文件夹中读取文件,并通过文件名(不带文件格式 (.fa))分配列表元素名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55693401/

相关文章:

r - lapply 与回归模型的多个列表和函数

r - 测量数据框中所有先前值的最大值

r - 美元运算符作为 sapply 的函数参数未按预期工作

r - ggplot2 1.01 中不再有 geom_label() 了吗?

r - 更改 read.table 用于确定 R 中列数的行数

R - 图例 : assign multiple colours to the same text

java - 在 r 或其他软件中查找草图图像的坐标(例如扫描为照片格式)

r - 将 lapply 与日期和减号函数结合使用

r - 如何将参数作为字符传递给函数内的函数?

R:处理光栅包中的 sf 对象