我想读取一个可能很大的文本文件,并根据正则表达式即时过滤相关行。我的第一种方法是使用支持LaF
的软件包grepl
,然后使用library(LaF)
fh <- laf_open_csv("myfile.txt", column_types="string", sep="°")
# would be nice to declare *no* separator
fh[grepl("abc", fh[[1]]), ]
进行过滤。但是,这似乎不起作用:
as.character.default(x)
返回grepl
中的错误-没有方法将此S4转换为字符。似乎 public Form1()
{
InitializeComponent();
}
bool fileSelected = false; //default false because nothing selected at start.
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
openFile();
if (fileSelected == true)
{
codes...
}
}
string path= "";
private void openFile()
{
OpenFileDialog file= new OpenFileDialog();
file.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
file.Filter = "Text File|*.txt";
//file.RestoreDirectory = true;
if (file.ShowDialog() == DialogResult.OK)
{
path= dosya.FileName;
fileSelected = true;
}
else
{
MessageBox.Show("File not selected.");
}
}
应用于S4函数而不是块。
是否有一种不错的方法来从大文件中读取文本行并有选择地进行过滤?
答案 0 :(得分:0)
好的,我刚刚发现了process_blocks
:
regfilter <- function(df, result) c(result, df[grepl("1745", df[[1]]),1])
process_blocks(fh, regfilter)
这有效,现在我只需要找到一种忽略分隔符的方法即可。