R函数以字符形式获取文件的目录名

R函数以字符形式获取文件的目录名,r,directory,path,R,Directory,Path,我可以在文件夹a中创建csv文件列表: list1 <- dir_ls("path to folder_A") 列表1文件夹A的路径是一个坏例子,请使用路径/文件夹A。您需要删除从开始到最后一个/的所有内容: library(stringr) str_replace("path/to/folder_A", pattern = ".*/", replacement = "") # [1] "folde

我可以在文件夹a中创建csv文件列表:

list1 <- dir_ls("path to folder_A")
列表1
文件夹A的路径是一个坏例子,请使用
路径/文件夹A
。您需要删除从开始到最后一个
/
的所有内容:

library(stringr)
str_replace("path/to/folder_A", pattern = ".*/", replacement = "")
# [1] "folder_A"

如果您担心
\\
或其他非标准问题,请使用
dirname()
作为输入。

您可以使用
dirname
+
basename

list1 <- list.files('folder_A_path', full.names = TRUE)

read_and_save_combo <- function(fileX) {
  readr::read_csv(fileX) %>% 
    dplyr::mutate(fileX = basename(dirname(fileX)))
}

combo_df <- purrr::map_df(list1, read_and_save_combo)

这里有两种方法可以实现我想要的,使用上面有用的答案:

read_and_save_combo <- function(file){
  read_csv(file) %>% 
    mutate(filename = path_file(file), foldername = basename(dirname(file)))}

使用某些字体看起来太相似了,这会把你搞得一团糟(大写)。

谢谢Gregor!我按照您的建议使用了dirname(),这将简化我在Windows上的文件路径(复制文件路径和添加文件路径是一件痛苦的事情)。我用这个新功能编辑了我的帖子,很有效@kayak你应该把你的工作职能作为一个答案,而不是你的问题!鼓励回答您自己的问题(尽管在您接受自己的答案之前有24小时的等待时间),谢谢Ronak!此解决方案更易于编写,谢谢。我阅读了这些函数的帮助,但您的示例要好得多。字符串处理的是“path_file”和“basename”下的所有内容吗?是的,我想是的。这些函数依赖于字符串处理。
list1 <- list.files('folder_A_path', full.names = TRUE)

read_and_save_combo <- function(fileX) {
  readr::read_csv(fileX) %>% 
    dplyr::mutate(fileX = basename(dirname(fileX)))
}

combo_df <- purrr::map_df(list1, read_and_save_combo)
dirname('Users/Downloads/FolderA/Filename.csv')
#[1] "Users/Downloads/FolderA"

basename(dirname('Users/Downloads/FolderA/Filename.csv'))
#[1] "FolderA"
read_and_save_combo <- function(file){
  read_csv(file) %>% 
    mutate(filename = path_file(file), foldername = basename(dirname(file)))}
read_and_save_combo <- function(file){
  read_csv(file) %>% 
    mutate(filename = path_file(file), foldername = dirname(file) %>%
             str_replace(pattern = ".*/", replacement = ""))}
filex and fileX