gpt4 book ai didi

R:根据用户输入构造文件路径

转载 作者:行者123 更新时间:2023-12-04 10:43:28 24 4
gpt4 key购买 nike

我有两个变量,work.dirmy.file .这意味着用户想要保存 my.filework.dir .要求用户输入 work.dir路径,这就是它变得棘手的地方。如果用户输入 work.dir小路
c:/temp/
我尝试 paste这与 my.name , 我会得到
c:/temp/my.file .

但是如果用户输入
c:/temp
我会得到
c:/tempmy.file .

到目前为止,我一直在通过提取 work.dir 的各个部分来解决这个问题。并将其粘在一起以实现一致性,但我想知道是否有另一种方法(可能更有弹性)?

到目前为止,这是我获得一致目录的解决方案,该目录可用于与文件名粘贴在一起。

work.dir <- "c:/temp"
work.dir <- paste(dirname(work.dir), basename(work.dir), sep = "")

最佳答案

James 正确地指出,在大多数情况下,目录将被正确解释。如果这不能满足您并假设您的用户知道他或她不应该在他的目录中使用反斜杠,您可以使用 file.path()解决您的问题,例如:

makepath <- function(path,file){
path <- as.list(strsplit(path,'/')[[1]])
do.call(file.path,c(path,file))
}

如果您的用户可能使用 Windows 反斜杠(并且忘记他必须用另一个反斜杠转义它们),您可以添加以下控件:
makepath <- function(path,file){
if(grepl('[^[:graph:]]',path))
stop("Invalid characters. Check you didn't use a single \\")
win <- grepl('\\\\',path)
sep <- if(win) '\\\\' else '/'
path <- as.list(strsplit(path,sep)[[1]])
do.call(file.path,c(path,file))
}

这给出了:
> makepath('c:\\temp','myfile')
[1] "c:/temp/myfile"
> makepath('c:\\temp\\','myfile')
[1] "c:/temp/myfile"
> makepath('c:/temp','myfile')
[1] "c:/temp/myfile"
> makepath('c:/temp/','myfile')
[1] "c:/temp/myfile"

关于R:根据用户输入构造文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9429457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com