R:应用列替换命令,循环遍历目录中的所有文件

R:应用列替换命令,循环遍历目录中的所有文件,r,loops,lapply,R,Loops,Lapply,所以我有一个.txt文件目录。每个包含表示某些度量的特征的列。对于同一目录中的文件,我想将名为treatmentsum的一列的内容替换为3S_TNFaCHx_cluster1_333nM+0.1ug/ml_none。我将用不同文件夹中的不同名称替换同一列,是的,我知道这个名称非常烦人,相信我,还有更糟糕的名称 所以我想,替换数据框中的列很容易,我只需打开目录,然后执行以下操作: df <- read.table(x, header=TRUE) df$treatmentsum <- c

所以我有一个.txt文件目录。每个包含表示某些度量的特征的列。对于同一目录中的文件,我想将名为treatmentsum的一列的内容替换为3S_TNFaCHx_cluster1_333nM+0.1ug/ml_none。我将用不同文件夹中的不同名称替换同一列,是的,我知道这个名称非常烦人,相信我,还有更糟糕的名称

所以我想,替换数据框中的列很容易,我只需打开目录,然后执行以下操作:

df <- read.table(x, header=TRUE)
df$treatmentsum <- c("3S_TNFaCHx_cluster1_333nM+0.1ug/ml_none")
我收到的警告信息:

scanfile=file,what=what,sep=sep,quote=quote,dec=dec,出现错误: 第1行没有744个元素


我尝试创建文件夹结构并测试了以下代码。似乎有效

source_folder <- "Folder1"
destination_folder <- "Folder2"

files <- list.files(path = source_folder, pattern = "*.txt", 
                    full.names = TRUE, recursive = FALSE)

lapply(files, function(x) {
  df <- read.table(x, header=TRUE)
  df$Col2 <- c("the new stupid name thanks to pharma")
  write.table(df, paste0(destination_folder,"/", basename(x)), sep="\t", 
              quote=FALSE, row.names=FALSE, col.names=TRUE)
})

一个突出的问题是这出感谢你的编辑冻糕。我删除了你应该给输出路径一个物理文件而不是文件夹。我不太明白,抱歉,这里没有。你的意思是write.tabledf,XXX,sep=\t,quote=FALSE,row.names=FALSE,col.names=TRUE。XXX需要是一个文件吗?我应该把它放在那里什么文件?谢谢Vishal,但我仍然在第1行收到相同的错误消息没有744 elementsHi Vishal,非常有趣的是,代码在添加fill=T时运行。但是返回的表中填充了大量的exta列NA,并且有一半的头被弄乱了。我将read.table改为read.csv,它解决了这个问题。唯一的问题是在表的末尾,我现在有一个额外的列NA@Parfait嗨,冻糕,天哪,你可以用@here!你指的是混乱的NAs吗?当使用read.csv时,我从其他人那里得到了类似的关于数据末尾额外的NA列的回复。我从实验室以前的人那里得到了数据,通过用记事本读取.txt文件,似乎分隔符是tab或空格。输出文件的工具只提供.txt格式,我希望有一天他们能生成csv文件。@Parfait。我尝试使用read.delim,但输出文件仍然有额外的NA@Parfait谢谢你的帮助。read.delim中不允许使用名称为1的行。
source_folder <- "Folder1"
destination_folder <- "Folder2"

files <- list.files(path = source_folder, pattern = "*.txt", 
                    full.names = TRUE, recursive = FALSE)

lapply(files, function(x) {
  df <- read.table(x, header=TRUE)
  df$Col2 <- c("the new stupid name thanks to pharma")
  write.table(df, paste0(destination_folder,"/", basename(x)), sep="\t", 
              quote=FALSE, row.names=FALSE, col.names=TRUE)
})