我正在制作 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/