我正在制作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问题?
答案 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)