R循环在第一次运行后退出
嘿嘿, 我有一个循环,我想运行它来根据一个条件在多个表中分隔一个文件。基本上,我采用在psms表中找到的每个唯一文件名,并将这些行分隔为单独的文件R循环在第一次运行后退出,r,R,嘿嘿, 我有一个循环,我想运行它来根据一个条件在多个表中分隔一个文件。基本上,我采用在psms表中找到的每个唯一文件名,并将这些行分隔为单独的文件 writeCSVTables <- function(files, psms){ for(i in length(files)){ name <- tools::file_path_sans_ext(files[i]) write.table(psms[grep(name, psms$file), c("accession",
writeCSVTables <- function(files, psms){
for(i in length(files)){
name <- tools::file_path_sans_ext(files[i])
write.table(psms[grep(name, psms$file), c("accession", "sequence", "peptide",
"modif", "fixed", "file", "spectrum")],
paste(name,".corr.csv", sep =""), sep ="\t", row.names = FALSE, quote = FALSE)
}
}
writeCSVTables试试看
[...]
for(i in seq(length(files))){
[...]
解释
(长度为i(文件))的符号
表示变量i
将以迭代方式假定它旁边的向量中的所有值<代码>长度(文件)
是单个值,因此它只运行一次,然后退出。按设计工作
您可能想要的是for(i in seq(length(files))
。这里,i
迭代地假定seq(长度(文件))
(即1
,2
,3
,…,长度(文件)
)中的每个值
其他解决方案也可以更好地利用矢量化。试试看
[...]
for(i in seq(length(files))){
[...]
解释 (长度为i(文件))的符号
表示变量i
将以迭代方式假定它旁边的向量中的所有值<代码>长度(文件)是单个值,因此它只运行一次,然后退出。按设计工作
您可能想要的是for(i in seq(length(files))
。这里,i
迭代地假定seq(长度(文件))
(即1
,2
,3
,…,长度(文件)
)中的每个值
其他解决方案也可以更好地利用矢量化。如果
长度(文件)
为2,则在唯一元素为2的1元素向量上进行for循环
无论如何,为什么要使用索引呢?直接在文件名上循环
替换
for(i in length(files)){
name <- tools::file_path_sans_ext(files[i])
用于(长度为i(文件)){
name如果length(files)
为2,则在唯一元素为2的1元素向量上进行for循环
无论如何--为什么要使用索引呢?直接循环文件名就行了
替换
for(i in length(files)){
name <- tools::file_path_sans_ext(files[i])
用于(长度为i(文件)){
名称