2016-07-04 44 views
1

在R中,是否有可能读取连接(或只是一个文件),直到找到给定的字符?R:读取连接,直到找到给定字符

我正在寻找类似std::getline(io, str, '\t')

感谢的东西,

+3

不幸的是'readLines'和'scan'都无法读取整个文件或手动搜索分隔符。因此,您需要使用'readChar'或'readLines',并手动搜索分隔符。或者你使用'scan(io,sep ='\ t')[1]',但是它会读取整个文件。 –

回答

0

您无法读取字符一个接一个通过文件连接到一个给定的字符被发现。

如果你的目的只是为了找到文本到一个特定字符的第一次出现(和你不那么在乎的速度),你可以使用readLinesregexprsubstr这样的:

filename <- "2DArray.cpp" 

filestring <- "" 
for (i in readLines(filename)) { 
    indexCharInLine <- as.integer(regexpr(":",i)) 
    if (indexCharInLine > 0) { 
    filestring <- paste0(filestring, substr(i, 1, indexCharInLine)) 
    break 
    } 
    filestring <- paste0(filestring,i) 
} 

你将得到的结果:

> filestring 
[1] "// Two-Dimensional Dynamic Array#include <iostream>using namespace std;typedef int* IntArrayPtr;int main(){ int d1, d2; cout << \"Enter the row and col dims of the array:" 

注意,这并不表明特殊换行符。

+0

您的代码正在读取两次while文件,效率极低。将'readLines'结果粘贴到一个字符串应该更有效率。或者,不要粘贴它并单独扫描线。 –

+0

你是对的:我将编辑效率代码。 – Anton

相关问题