在R中,从列表中的文件夹中读取文件,并按文件名(无文件格式)分配列表元素名称(.fa)

问题描述 投票:1回答:1

我正在制作listfasta文件并从文件夹中读取它们。文件名应指定为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停止(,1, 15))和进一步处理我想摆脱.fa

文件看起来像:

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

我正在使用DECIPHER,但我想这是一个更基础的R问题?

r lapply
1个回答
1
投票

为了在结尾处删除子字符串,我们也可以使用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)
© www.soinside.com 2019 - 2024. All rights reserved.