我希望这个问题清楚可行。我有许多标有简单数字ID的csv文件(例如,1.csv,2.csv,3.csv等)。另一个csv文件包含如下的实际数据
ID Site Location Block
1 L1 1 a
2 L2 2 b
3 etc
我的问题是如何链接数据文件中的ID以重命名csv文件。理想情况下我想要的输出是L11a.csv,L22b.csv等。我想我需要将每行观察的Site,Location和Block连接到另一列,然后使用该列作为write.table的文件名。功能
我搜索了SO,这个问题是相似的,除了反方向: When importing CSV into R how to generate column with name of the CSV?
非常感谢您的帮助。这将节省我重命名文件的时间!
答案 0 :(得分:2)
我用四个csv文件模拟了您的场景,并使用此内容模拟了名为info.txt
的文件中的数据:
"ID","Site","Location","Block"
1,"L1",1,"a"
2,"L2",2,"b"
3,"L3",3,"c"
4,"L4",4,"d"
对于此设置,如果我的理解正确,以下代码将实现您的目标:
x <- list.files( pattern = ".csv" )
info <- read.table( file = "info.txt", sep = ",", header = TRUE,
row.names = FALSE, stringsAsFactors = FALSE )
y <- paste( info[ ,"Block" ], ".csv", sep = "" )
for( i in c( "Location", "Site" ) ) y <- paste( info[ ,i ], y, sep = "" )
file.rename( x, y )
list.files( pattern = ".csv" )
[1] "L11a.csv" "L22b.csv" "L33c.csv" "L44d.csv"
(以@joran的评论为基础)
答案 1 :(得分:1)
这是另一种选择:
info <- read.table( file = "info.txt", sep = ",", header = TRUE, row.names = NULL,
stringsAsFactors = FALSE )
with(info, file.rename(paste0(ID, ".csv"), paste0(Site, Location, Block, ".csv")))