[R] Extracting data using subset function
Duncan Murdoch
murdoch@dunc@n @end|ng |rom gm@||@com
Sun Feb 5 21:13:54 CET 2023
On 05/02/2023 2:59 p.m., Rolf Turner wrote:
> On Sun, 5 Feb 2023 19:37:03 +0530
> Upananda Pani <upananda.pani using gmail.com> wrote:
>
>> Dear All,
>>
>> I want to create a vector p and extract first 20 observations using
>> subset function based on logical condition.
>>
>> My code is below
>>
>> p <- 0:100
>>
>> I know i can extract the first 20 observations using the following
>> command.
>>
>> q <- p[1:20]
>>
>> But I want to extract the first 20 observations using subset function
>> which requires a logical condition. I am not able to frame the
>> logical condition.
>>
>> The code should be
>>
>> q <- subset(p, logical condition)
>>
>> I am not able to do it. Please let me know what you think.
>
> I think that you are manufacturing an unnecessary difficulty. If you
> want the first 20 entries of p, use p[1:20]!!!
>
> However, if you obdurately *insist* on using subset() you could do
>
> subset(p,(1:length(p)) <= 20)
>
> This works, but makes a mountain out of a molehill.
Just to build the mountain a little higher, I would use
subset(p, seq_along(p) <= 20)
You should generally avoid expressions like "1:length(p)", because they
don't do what you would expect in the unusual case that p is length 0.
Even in cases where you know p is not length 0, it's a good habit to get
into so that in the future you don't get surprised.
Duncan Murdoch
More information about the R-help
mailing list