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

时间:2019-04-15 16:18:49

标签: r lapply

我正在制作list个文件中的一个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),并且为了进一步处理,我想摆脱.fa

文件如下:

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

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

1 个答案:

答案 0 :(得分: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)