将列表的每个元素保存到文本文件
Save each element of a list to text file
我有一个包含许多 csv 文件的文件夹。我是这样读的
files <- list.files(pattern = "*.csv")
[1] "ETo_1980.csv" "ETo_1981.csv" "ETo_1982.csv" "ETo_1983.csv" "ETo_1984.csv" "ETo_1985.csv"
[7] "ETo_1986.csv" "ETo_1987.csv" "ETo_1988.csv" "ETo_1989.csv" "ETo_1990.csv" "ETo_1991.csv"
[13] "ETo_1992.csv" "ETo_1993.csv" "ETo_1994.csv" "ETo_1995.csv" "ETo_1996.csv" "ETo_1997.csv"
[19] "ETo_1998.csv" "ETo_1999.csv" "ETo_2000.csv" "ETo_2001.csv" "ETo_2002.csv" "ETo_2003.csv"
[25] "ETo_2004.csv" "ETo_2005.csv" "ETo_2006.csv" "ETo_2007.csv" "ETo_2008.csv" "ETo_2009.csv"
[31] "ETo_2010.csv" "ETo_2011.csv" "ETo_2012.csv" "ETo_2013.csv" "ETo_2014.csv" "ETo_2015.csv
现在我读了它们:
DT <- lapply(files, fread)
每个文件,我想另存为文本文件(.txt)。如何将每个文件另存为同名的 .txt 文件?
lapply(DT, function(x) { write.table()})?
我生成了一个名为 x
的 list
,其中包含两个名为 a
和 b
的对象。在循环中使用 paste0
自动命名文本文件,如下所示:a.txt
和 b.txt
。 write.table
执行文件的实际保存。
x <- list(a=c(1,2), b=c(3,4))
for(i in 1:length(x)){
write.table(x[[i]], paste0(names(x)[i], ".txt"), col.names = F)
}
使用list.files
查看文件是否已保存在您的工作目录中。
list.files()
[1] "a.txt" "b.txt"
改为循环索引并创建一个包含要另存为的文件名的向量:
txt_files <- sub("csv$","txt",files)
lapply(seq_along(DT), function(x) write.table(DT[[x]], txt_files[x]))
请注意,您可能还想从输出中排除 row.names。
尝试使用 read.csv
读入 CSV 文件,然后 write.csv
写入:
lapply(files, function(x) {
df <- read.csv(file=x)
name <- sub("\.csv$", "\.txt", x)
write.csv(df, file=name)
})
我有一个包含许多 csv 文件的文件夹。我是这样读的
files <- list.files(pattern = "*.csv")
[1] "ETo_1980.csv" "ETo_1981.csv" "ETo_1982.csv" "ETo_1983.csv" "ETo_1984.csv" "ETo_1985.csv"
[7] "ETo_1986.csv" "ETo_1987.csv" "ETo_1988.csv" "ETo_1989.csv" "ETo_1990.csv" "ETo_1991.csv"
[13] "ETo_1992.csv" "ETo_1993.csv" "ETo_1994.csv" "ETo_1995.csv" "ETo_1996.csv" "ETo_1997.csv"
[19] "ETo_1998.csv" "ETo_1999.csv" "ETo_2000.csv" "ETo_2001.csv" "ETo_2002.csv" "ETo_2003.csv"
[25] "ETo_2004.csv" "ETo_2005.csv" "ETo_2006.csv" "ETo_2007.csv" "ETo_2008.csv" "ETo_2009.csv"
[31] "ETo_2010.csv" "ETo_2011.csv" "ETo_2012.csv" "ETo_2013.csv" "ETo_2014.csv" "ETo_2015.csv
现在我读了它们:
DT <- lapply(files, fread)
每个文件,我想另存为文本文件(.txt)。如何将每个文件另存为同名的 .txt 文件?
lapply(DT, function(x) { write.table()})?
我生成了一个名为 x
的 list
,其中包含两个名为 a
和 b
的对象。在循环中使用 paste0
自动命名文本文件,如下所示:a.txt
和 b.txt
。 write.table
执行文件的实际保存。
x <- list(a=c(1,2), b=c(3,4))
for(i in 1:length(x)){
write.table(x[[i]], paste0(names(x)[i], ".txt"), col.names = F)
}
使用list.files
查看文件是否已保存在您的工作目录中。
list.files()
[1] "a.txt" "b.txt"
改为循环索引并创建一个包含要另存为的文件名的向量:
txt_files <- sub("csv$","txt",files)
lapply(seq_along(DT), function(x) write.table(DT[[x]], txt_files[x]))
请注意,您可能还想从输出中排除 row.names。
尝试使用 read.csv
读入 CSV 文件,然后 write.csv
写入:
lapply(files, function(x) {
df <- read.csv(file=x)
name <- sub("\.csv$", "\.txt", x)
write.csv(df, file=name)
})