[英]How do I delete rows from a text file in R?
我有一个文本文件,其中包含如下所示的数据行项目:
我想删除包含以下值的行:(我有另一个包含这些值的文本文件需要删除)PPP QQQ
最后:
我从未使用过 R 并且想知道是否有办法做到这一点。 如果可以在 Python 中以更快的方式完成,请告诉我。 我对选择持开放态度。
您可以使用grep
进行 integer 索引
> df[-grep("PPP|QQQ", df$V1), , drop=FALSE]
V1
1 1~123~JJJ
2 2~223~AAA
3 3~444~LLL
其中df
是一个 data.frame:
df <- read.table(text="1~123~JJJ
2~223~AAA
3~444~LLL
4~567~PPP
5~785~QQQ", header=FALSE, stringsAsFactors=FALSE)
我不熟悉 R,但这是我在 python 中的做法
with open("yourfile.txt", "r") as f:
lines = f.readlines()
with open("yourfile.txt", "w") as f:
for line in lines:
if not line.__contains__("string to delete"):
f.write(line)
编辑:为了与读取另一个包含所有要排除的字符串的文件一起工作,您需要执行以下操作:
with open("to be deleted.txt", "r") as f:
parts = f.readlines()
with open("yourfile.txt", "r") as f:
lines = f.readlines()
with open("yourfile.txt", "w") as f:
for line in lines:
for part in parts:
if not part in line:
f.write(line)
您可以使用readLines
和grepl
的组合,然后是writeLines
:
conn <- file("path/to/input.txt")
lines <- readLines(conn)
close(conn)
lines <- lines[grepl("^(?!.*\\b(?:PPP|QQQ)\\b).*$", lines, perl=TRUE)]
conn <- file("path/to/input.txt", "w") # assuming you want to write to the same file
writeLines(lines, conn)
close(conn)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.