R 我有一个数据帧列表,我想用它自己的名字分别命名
我能够从文件夹中提取文件并有一个列表R 我有一个数据帧列表,我想用它自己的名字分别命名,r,list,dataframe,R,List,Dataframe,我能够从文件夹中提取文件并有一个列表 #Set work directory directory<-paste0("C://Program//User//Me//") filestoread <- list.files(directory, pattern = "^LName_WWWF.*\\.xlsx$", full.names = TRUE) filelist = lapply(filestoread, function(x){as.
#Set work directory
directory<-paste0("C://Program//User//Me//")
filestoread <- list.files(directory, pattern = "^LName_WWWF.*\\.xlsx$", full.names = TRUE)
filelist = lapply(filestoread, function(x){as.data.frame(read_excel(x,sheet =
"Sheet1"))})
我想更改它们,以便names(filelist)函数将文件重命名为
"WWWF2016", "WWWF2017" , "WWWF2018",
"WWWF2019","WWWF2020"
我在想一些简单的事情,比如删除第一个下划线之前的所有内容,然后保留连接左4和右4。如果您有更好的想法,也可以。使用
sub
,我们可以将子字符串捕获为一个块,并在replacement
中指定捕获组的反向引用
names(filelist) <- sub("^[^_]+_([A-Z]+)R[a-z]+(\\d+)_.*",
"\\1\\2", basename(filenm))
names(filelist)
#[1] "WWWF2016" "WWWF2017" "WWWF2018" "WWWF2019" "WWWF2020"
替换
`\\1`- backreference for first captured group
`\\2` - backreference for second captured group
数据
filenm使用sub
,我们可以将子字符串捕获为块,并在replacement
names(filelist) <- sub("^[^_]+_([A-Z]+)R[a-z]+(\\d+)_.*",
"\\1\\2", basename(filenm))
names(filelist)
#[1] "WWWF2016" "WWWF2017" "WWWF2018" "WWWF2019" "WWWF2020"
替换
`\\1`- backreference for first captured group
`\\2` - backreference for second captured group
数据
filenm希望下面的代码对您有用(感谢@akrun的数据)
希望下面的代码对您有用(感谢@akrun的数据)
你知道为什么在整个文件路径中读取我的文件吗?我的结果以C://Program//User//Me//LName\u wwfrecvd2017\u日期20200204结束。我是否切断了字符串名称目录?@user35131我以为你已经切断了路径。您可以使用basename(filenm)
。第一次尝试更新的代码,看看它是如何完成的。非常感谢。一切都很顺利。非常感谢你!你知道为什么在整个文件路径中读取我的文件吗?我的结果以C://Program//User//Me//LName\u wwfrecvd2017\u日期20200204结束。我是否切断了字符串名称目录?@user35131我以为你已经切断了路径。您可以使用basename(filenm)
。第一次尝试更新的代码,看看它是如何完成的。非常感谢。一切都很顺利。非常感谢你!
filenm <- c("LName_WWWFRecvd2016_dated_20200204",
"LName_WWWFRecvd2017_dated_20200204",
"LName_WWWFRecvd2018_dated_20200204",
"LName_WWWFRecvd2019_dated_20200204",
"LName_WWWFRecvd2020_dated_20200204")
> sub(".*_(\\w{4})\\w+(\\d{4})_.*", "\\1\\2", filenm)
[1] "WWWF2016" "WWWF2017" "WWWF2018" "WWWF2019" "WWWF2020"