首页 > 解决方案 > 使用 lapply 保存文件时如何添加字符

问题描述

我有以下列表

  L = list.files(".", ".txt")

这是

   a.txt
   b.txt
   c.txt

我想对该列表中的所有文件应用一些代码,但我想保存具有相同名称的数据框加上一些字符以表明它已被修改。例如

   a_modified.txt
   b_modified.txt
   c_modified.txt

我目前正在使用此代码:

   datalist = lapply(L, function(x) {
   DF = read.csv(x, sep = ",")
   DF$X = gsub("[:.:][[:digit:]]{1,3}","", DF$X))
   colnames(DF)[colnames(DF)=="X"] <- "ID"
   DF <- merge(DF, genes ,by="ID")
   write.csv(DF, x)
   return(DF)
   })

我尝试使用

   write.csv(DF, x+"_modified")

这显然是错误的,因为 write.csv 不接受这个确切的操作。

有任何想法吗?

标签: rlapply

解决方案


我们需要paste而不是+

write.csv(DF, paste0(sub("\\.txt", "", x), "_modified.csv"))

或者这可以在其内部sub完成

write.csv(DF, sub("\\.txt", "_modified.csv", x))

注意:初始数据集是.txt


推荐阅读