Regex 修剪字符串,直到出现特定字符

Regex 修剪字符串,直到出现特定字符,regex,r,Regex,R,我正在从一个文件夹中读取一组文件,将它们合并到一个数据框中,然后将该数据框保存在该文件夹的“外部”。例如 # path to folder that contains files to read in: path <- "/path/to/folder" # read in files files <- list.files(path, pattern = "*.csv", full.names = TRUE) # do stuff with files ... # safe

我正在从一个文件夹中读取一组文件,将它们合并到一个数据框中,然后将该数据框保存在该文件夹的“外部”。例如

# path to folder that contains files to read in:
path <- "/path/to/folder"

# read in files
files <- list.files(path, pattern = "*.csv", full.names = TRUE)

# do stuff with files
...

# safe data frame
path.2 <- "/path/to/"
write.csv2(paste0(path.2, "dat.csv"), dat)
我该怎么做呢?

类似这样的事情:

path <- "/path/to/folder"
paste(head(unlist(strsplit(path, "/", fixed = TRUE)), -1), collapse = "/")

# [1] "/path/to"

path使用
sub

sub('/([^/]*)$', '', path)
#[1] "/path/to"
或者使用
stru extract
stringr
包中提取

str_extract(path, '^(?:[^/]*/){3}')
#[1] "/path/to/"

为什么不先指定
path2
,然后使用“粘贴”创建
path
?@nbatrands我正在创建一个脚本,该脚本将由位于不同位置的不同文件夹的不同计算机上的不同人员使用。我希望他们只需要修改脚本中的一个值(到包含文件的文件夹的路径),否则书面解释将变得太复杂而无法遵循。根据您的建议,他们必须分别定义文件夹路径和文件夹名称。您的第二个示例(使用
str_extract
)仅适用于正好有三个文件夹深度的路径。第一个很好。谢谢你。我以为情况总是3,因此
{3}
:)
str_extract(path, '^(?:[^/]*/){3}')
#[1] "/path/to/"