[R] Fetching a range of columns

jim holtman jholtman at gmail.com
Tue Sep 16 02:15:25 CEST 2008


your colClasses should look like this:

colClasses=c(rep("NULL",49), "numeric")

On Mon, Sep 15, 2008 at 6:27 PM, David Winsemius <dwinsemius at comcast.net> wrote:
>
> On Sep 14, 2008, at 7:20 PM, David Winsemius wrote:
>
>>
>> On Sep 14, 2008, at 5:39 PM, Adam D. I. Kramer wrote:
>>
>>>
>>>
>>> Not sure if the help you needed was using the comma, or the : syntax, or
>>> if
>>> you're trying to read only certain columns during the read.csv process
>>> (which I don't think that's possible).
>>
>> ? colClasses  # with the vector element of NULL for each unwanted column.
>>
>> I am not the person to be advising how to do this properly, as all of my
>> efforts to use this facility to date have failed and I have resorted to
>> reading in lines  with as.is=TRUE and then post-processing. But the facility
>> does exist.
>>
>> Maybe someone could give me a clue how one might construct a vector to
>> send to colClasses inside read.table?
>>
>> > mt <- matrix(1:200,nrow=4)
>> > write.table(file=file.choose(), as.data.frame(mt))
>> > read.table(file.choose())
>>  V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20
>> V21 V22 V23 V24 V25 V26 V27 V28 V29
>> 1  1  5  9 13 17 21 25 29 33  37  41  45  49  53  57  61  65  69  73  77
>>  81  85  89  93  97 101 105 109 113
>> 2  2  6 10 14 18 22 26 30 34  38  42  46  50  54  58  62  66  70  74  78
>>  82  86  90  94  98 102 106 110 114
>> 3  3  7 11 15 19 23 27 31 35  39  43  47  51  55  59  63  67  71  75  79
>>  83  87  91  95  99 103 107 111 115
>> 4  4  8 12 16 20 24 28 32 36  40  44  48  52  56  60  64  68  72  76  80
>>  84  88  92  96 100 104 108 112 116
>>  V30 V31 V32 V33 V34 V35 V36 V37 V38 V39 V40 V41 V42 V43 V44 V45 V46 V47
>> V48 V49 V50
>> 1 117 121 125 129 133 137 141 145 149 153 157 161 165 169 173 177 181 185
>> 189 193 197
>> 2 118 122 126 130 134 138 142 146 150 154 158 162 166 170 174 178 182 186
>> 190 194 198
>> 3 119 123 127 131 135 139 143 147 151 155 159 163 167 171 175 179 183 187
>> 191 195 199
>> 4 120 124 128 132 136 140 144 148 152 156 160 164 168 172 176 180 184 188
>> 192 196 200
>>
>> Not working efforts:
>> tstdta <- read.table(file.choose(), colClasses =
>> c(c(paste(rep("NULL",49),sep=","),"numeric"),header=TRUE)
>> tstdta <- read.table(file.choose(), colClasses =
>> paste(rep("NULL",49),"numeric",sep=","),header=TRUE)
>
>
>  Argument recycling. Paste returns 49 element vector, each with "NULL,
> numeric".
>
> ?append
>
>> tstdta <- read.table(file.choose(), colClasses = append( rep("NULL",48),
>> c("numeric","numeric"), after=48), header=FALSE,  skip=1)
>
>> tstdta
>  V49 V50
> 1 189 193
> 2 190 194
> 3 191 195
> 4 192 196
>
>> tstdta <- read.table(file.choose(), colClasses =
>> append(rep("NULL",48),c("numeric","numeric"),after=45),header=FALSE, skip=1)
>> tstdta
>  V46 V47
> 1 177 181
> 2 178 182
> 3 179 183
> 4 180 184
>
> Setting header=TRUE created an error:
> Error in read.table(file.choose(), colClasses = append(rep("NULL", 49),  :
>  invalid 'row.names' length
>
> I am assuming that is because the number of columns in the data.frame did
> not match the vector of names extracted from the first row.
>
> --
> David Winsemius
> Heritage Labs
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem that you are trying to solve?



More information about the R-help mailing list