当我只有一部分名称包括开头或结尾字符时,如何从R中读取文件?
谢谢
答案 0 :(得分:5)
您可以使用具有list.files
参数的pattern
尽可能接近匹配。
writeLines(c('hello', 'world'), '~/tmp/example_file_abc')
filename <- list.files(path = '~/tmp', pattern = 'file_abc$', full.names = TRUE)[1]
readLines(filename)
# [1] "hello" "world"
答案 1 :(得分:0)
还有Sys.glob
根据glob
语法使用星号和问号扩展模式。
此处它包含在一个函数中,以匹配"first*last"
形式的文件名,其中"*"
是任何东西。如果你的文件名中确实有星星或其他特殊字符......那么你需要做更多的事情..无论如何:
> match_first_last = function(first="", last="", dir=".")
{Sys.glob(
file.path(dir,paste(first,"*",last,sep=""))
)
}
# matches "*" and so everything:
> match_first_last()
[1] "./bar.X" "./foo.c" "./foo.R"
# match things starting `foo`
> match_first_last("foo")
[1] "./foo.c" "./foo.R"
# match things ending `o.c`
> match_first_last(last="o.c")
[1] "./foo.c"
# match start with f, end in R
> match_first_last("f","R")
[1] "./foo.R"