R

时间:2015-10-08 13:56:51

标签: regex r

在R脚本中,我有一个函数可以在具有特定扩展名的目录中创建文件数据框。

数据框总是两列,但是有很多行,因为找到了具有该特定扩展名的文件。

数据框最终看起来像这样:

|           Path           |   Filename  |
|:------------------------:|:-----------:|
| C:/Path/to/the/file1.ext |  file1.ext  |
| C:/Path/to/the/file2.ext |  file2.ext  |
| C:/Path/to/the/file3.ext |  file3.ext  |
| C:/Path/to/the/file4.ext |  file4.ext  |

原谅我提出这个问题的考古方式。我知道在SQL中,您可以使用where代替like来应用=个函数。所以我可以说``Filename like'%1%',它会拔出名字中带有1的所有文件。有没有办法使用这样的东西在R?

中设置变量

我有几个不同的脚本需要使用从此数据框中提取的文件名。我能想到的唯一可靠的方法是告诉脚本从哪个中提取出来的是设置这样的变量。

最终我希望这两个(伪)表达式产生同样的效果。

x <- file1.ext

x like '%1%'

都应该给出x = file1.ext

2 个答案:

答案 0 :(得分:3)

您可以使用like中的data.table来获取您的sql行为。 从文档中可以看到这个例子

library(data.table)
DT = data.table(Name=c("Mary","George","Martha"), Salary=c(2,3,4))
DT[Name %like% "^Mar"]

对于您的问题,假设您有data.frame df这样的

                                  path  filename
1:            C:/Path/to/the/file1.ext file1.ext
2:            C:/Path/to/the/file2.ext file2.ext
3:            C:/Path/to/the/file3.ext file3.ext
4:            C:/Path/to/the/file4.ext file4.ext

DO

library(data.table)
DT<-as.data.table(df)
DT[filename %like% "1"]

应该给出

                       path  filename
1: C:/Path/to/the/file1.ext file1.ext

答案 1 :(得分:2)

您可以像this answer

一样使用grepl()
subset(a, grepl("1", a$filename))

或者,如果您来自SQL背景,可能需要查看sqldf