我想清除非结构化文本文件中的所有“垃圾”(使文件不适合分析)。
在这种特定情况下,仅保留所需信息的一种方法是仅保留大于250的所有数字(文本是字符串,数字,...的组合)
对于大量文本文件,我想在R中执行以下操作:
x <- x[which(x >= "250"),]
当我尝试在一个循环中执行相同操作时,一个文本文件的代码运行完美(上述)(对于N个较大的文本文件,它会失败(错误:错误的维数o))。
for(i in 1:length(files)){
i<- i[which(i >= "250"),]
}
有人知道如何在R(或python)中解决这个问题吗?
图片:非常简单的文本文件示例,我想保留(START)和(END)之间的所有内容
答案 0 :(得分:0)
如果它是10 K文件,这没有任何意义,为什么还要尝试用R或python做呢?为什么不只是一个简单的awk
或bash命令?此外,您的图片正在解析文本文件中的START和END之间的信息,不确定是不是跨栏的数据框(尝试放入简单的dput
而不是图片。)
您要做的就是在10k个文件的开始和结束之间使用grep
。我会那样做。
bash这样的东西应该可以工作。
for i in *.txt
do
sed -n '/START/,/END/{//!p}' i > i.edited.txt
done
如果列是R中的标准列,则可以执行以下操作(但是,我不会在R内存中读取10 K文件)。 将文件作为数据帧列表读取,然后简单地执行
a = data.frame(col1 = c(100,250,300))
b = data.frame(col1 = c(250,450,100,346))
c = data.frame(col1 = c(250,123,122,340))
df_list <- list(a = a ,b = b,c = c)
lapply(df_list, subset, col1 >= 250)