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

时间:2016-03-16 12:47:21

标签: regex r

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

# 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.2的值。我想自动分配path.2 path的值,减去文件夹名称,而不必告诉R该文件夹的名称。也就是说,我需要修剪path中字符串右端的所有字符,直到文件分隔符(“/").

伪代码:

path <- "/path/to/folder"
path.2 <- rtrim(path, to = "/")
path.2
[1] "/path/to/"

我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

这样的事情:

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

# [1] "/path/to"

答案 1 :(得分:0)

使用sub

sub('/([^/]*)$', '', path)
#[1] "/path/to"

或使用str_extract包中的stringr

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