我有这个庞大的文件,里面有很多条目。我想只读取包含某些值的条目,例如" db_call"。
我试过这个:
df<-read.table(text=readLines("H:/ap.log")[grepl("db_call")])
我收到此错误:
论证&#34; x&#34;缺少,没有默认
任何想法?
答案 0 :(得分:5)
创建测试文件:
writeLines(c("aaa 11","aaa 22","bbb 33"),con="test.txt")
蛮力方法(基本上是你在上面尝试的方法)是读取整个事物,然后只拍摄你想要的部分:
xx <- readLines("test.txt")
xx <- xx[grepl("aaa",xx,fixed=TRUE)]
## (fixed=TRUE is slightly faster if you don't need regular expressions)
read.table(text=xx)
如果您有一个大文件,我建议您在系统级别使用grep
(如果您需要安装Cygwin,因为您似乎在使用Windows)并使用pipe
,例如
测试 - 查看包含目标字符串的行数:
system('grep "aaa" <text.txt | wc')
只读包含aaa
的行:
read.table(pipe('grep "aaa" <test.txt'))
这比将整个东西读入R然后选择你想要的部分要高效得多。