[R] scan and skip - without line breaks in the input file

Peter Ehlers ehlers at ucalgary.ca
Sat Feb 27 19:05:18 CET 2010


David, Susanne,

  There may be a misunderstanding here. As I understand it,
Susanne wants to be able to read the _second_ (and third, etc)
100K values after reading the first 100K, presumably to be
processed separately for reasons I can't imagine. If that is
correct, then I have no solution other than inserting
delimiters before passing off to R.

But Susanne, why do you need to read your data in this
piece-meal fashion?

   -Peter Ehlers

On 2010-02-27 10:46, David Winsemius wrote:
>
> On Feb 27, 2010, at 11:47 AM, Balzer Susanne wrote:
>
>> Hei David,
>>
>> Thanks for your quick response, but unfortunately n and nmax alone
>> don't do the job. If I want to read items no. 100001 to 200000, the
>> n=100000 option will work, but skip=100000 (to NOT read the first
>> 100000 items) won't.
>>
>> Or with your example,
>>
>> scan(textConnection('1 2 3 4 5 6 7'), skip=3) will never work, while
>
> True.
>>
>> scan(textConnection('1 2 3 4 \n 5 \n 6 \n 7'), skip=3) will. But I
>> don't have line breaks in my file.
>
> Right. That was what I was trying to help you deal with.
>
>>
>> Is there no way to specify the character for a line break in scan /
>> read.table / etc.?
>
> Why are you fixating on linefeeds when you don't have any?????
>
>  > closeAllConnections()
>  > tc <- textConnection(paste(1:100, sep=" ", collapse=" "))
>  > scan(tc, nmax=10)
> Read 10 items
> [1] 1 2 3 4 5 6 7 8 9 10
>  > scan(tc, nmax=10)
> Read 10 items
> [1] 11 12 13 14 15 16 17 18 19 20
>  > scan(tc, nmax=10)
> Read 10 items
> [1] 21 22 23 24 25 26 27 28 29 30
>  > scan(tc, nmax=10)
> Read 10 items
> [1] 31 32 33 34 35 36 37 38 39 40
>  > scan(tc, nmax=10)
> Read 10 items
> [1] 41 42 43 44 45 46 47 48 49 50
>  > scan(tc, nmax=10)
> Read 10 items
> [1] 51 52 53 54 55 56 57 58 59 60
>  > scan(tc, nmax=10)
> Read 10 items
> [1] 61 62 63 64 65 66 67 68 69 70
>  > scan(tc, nmax=10)
> Read 10 items
> [1] 71 72 73 74 75 76 77 78 79 80
>  > scan(tc, nmax=10)
> Read 10 items
> [1] 81 82 83 84 85 86 87 88 89 90
>  > scan(tc, nmax=10)
> Read 10 items
> [1] 91 92 93 94 95 96 97 98 99 100
>  > scan(tc, nmax=10)
> Read 0 items
> numeric(0)
>

-- 
Peter Ehlers
University of Calgary



More information about the R-help mailing list