Prometheus
Prometheus

Reputation: 2017

Set number of arguments programmatically

I have the following string:

test <- "C:\\Users\\stefanj\\Documents\\Automation_Desk\\script.R"

I am separating the string on the backslash characters with the following code:

pdf_path_long <- unlist(strsplit(test, "\\\\", 
                       fixed = FALSE, perl = FALSE, useBytes = FALSE))

What I want to do is:

pdf_path_short <- file.path(pdf_path_long[1], pdf_path_long[2], ...)

Problem is:

I know how to count the elements in the pdf_path_short - length(pdf_path_long), but I don't know how to set them in the file.path as the number of elements will very based on the length of the path.

Upvotes: 1

Views: 73

Answers (1)

Cath
Cath

Reputation: 24074

You can directly (no need for a strsplit call) use gsub on test to change the separators (with fixed=TRUE so you don't need to escape the double backslash), you will get same output as with file.path:

pdf_path_short <- gsub("\\", "/", test, fixed=TRUE)
pdf_path_short
# "C:/Users/stefanj/Documents/Automation_Desk/script.R"

Of course, you can change the replacement part with whatever separator you need.


Note: you can also check normalizePath function:

normalizePath(test, "/", mustWork=FALSE)
#[1] "C:/Users/stefanj/Documents/Automation_Desk/script.R"

Upvotes: 3

Related Questions