我正在寻找一种方法,在将该文件读入 R 时自动提取文件名的一部分并用它填充列。这是一个示例:
library(stringr)
df <- read.table("[MYPATH]/[email protected]",
comment.char = "", header = FALSE, quote="", sep="\t", stringsAsFactors = F, encoding = "UTF-8") %>%
mutate(Rec = str_extract(myFileNames[1], ".*\\d"))
但这之所以有效,只是因为我提前准备好了向量
myFileNames
以及所有相关的文件名,并且碰巧知道文件名[email protected]"
是该向量中的第一个元素。
如何在不绕道外部向量的情况下获得相同的结果?
正如我在评论中建议的那样(未经测试的代码):
readFileAndAddFileNameAsColumn <- function(fName) {
read.table(
fName,
comment.char = "",
header = FALSE,
quote="",
sep="\t", stringsAsFactors = F, encoding = "UTF-8"
) %>%
mutate(Rec = str_extract(fName, ".*\\d"))
}
readFileAndAddFileNameAsColumn("[MYPATH]/[email protected]")
或者,如果您将
.id
传递给 bind_rows
,则可以使用 myFileNamesList
的 lapply
参数。类似的东西
lapply(
myFileNamesList,
read.table,
comment.car = "",
header = FALSE,
quote = "",
sep = "\t",
stringsAsFactors = FALSE,
encoding = "UTF-8"
) %>%
bind_rows(.id = "Rec")