【发布时间】:2016-11-10 15:35:37
【问题描述】:
我正在尝试从 txt 文件中读取目录。 txt文件中的语法如下:
dirScript;"C:/User/Folder_1/R/Script-Folder 1/"
"empty line"
我想要的信息是让 var 等于一个字符串,目录如下:
var <- "C:/User/Folder_1/R/Script-Folder 1/"
setwd(var)
我的 R 代码如下所示:
tempString <- str_c(str_extract_all(textInTxtFile, regex("(?<=;).*"), simplify=TRUE), sep="", collapse="")
# Real variable, gsub expression deletes extra backslashes added by functions above
var <- gsub("[^A-Za-z0-9/.:-_; ]", "", tempString)
# Tempstring: "\""C:/User/Folder 1/R/Script-Folder 1/"\""
# Var: "C:/User/Folder 1/R/ScriptFolder 1/"
# *UPDATE* Or like this, seems to work, Safe enough?
var <- gsub('"', "", tempString)
所以我的“-”消失了,“_”也消失了。我不明白为什么,我认为我的正则表达式应该在分号“;”之后搜索任何内容,这是错误的吗?也许我不应该使用 str_c ? (但它有什么不同吗?)
另外,我如何修复我的 gsub 以不带走“-”和(?)“_”?或者如何修复我的正则表达式以便不需要 gsub,我的正则表达式或其他函数添加一些反斜杠和引用符号。
最后有没有办法在我找到正确的目录后检查我的目录?
这是一个好主意吗?
dir.create(file.path(mainDir, subDir), showWarnings = FALSE)
setwd(file.path(mainDir, subDir))
来自:Check existence of directory and create if doesn't exist
补充问题: 有没有一种方法可以轻松找到方向是否用反斜杠(Windows 标准)编写,如果是这样,我只会使用 gsub("[\]", "/", text)。我正在考虑只搜索一些反斜杠,如果它大于 3,我会使用它,但它不太安全。此外,我认为它会在正则表达式中抱怨,因为 R 会将反斜杠解释为转义字符。
所以“额外的问题”是,如何找到并解决这个问题:
dirScript;"C:\User\Folder_1\R\Script-Folder 1\"
"empty line"
【问题讨论】:
-
:-_是从:到_的范围,如果不是这样,请将-移动到字符类的末尾 -
那么您是在尝试从字符串中提取目录路径吗?
-
嗯,是的,但是目录路径是一个字符串,所以或多或少我只是想从txt文件中复制带有目录路径的字符串...
-
这个正则表达式
(C:\/.*?[^\s]\/)(\s|$)在 Regex101 中运行良好,但由于某种原因它在 R 中不起作用。 -
也许如果我添加一些额外的反斜杠,我会尝试一下。谢谢!