# [R] Extracting data using subset function

Jim Lemon drj|m|emon @end|ng |rom gm@||@com
Sun Feb 5 22:17:58 CET 2023

```Hi Upananda,
As a couple of respondents noted, you only need the logical statement,
not subset().

You did "frame the logical condition" in your example, for if you use
the extraction operator "[" this will work:
subset(p,(1:length(p)) <= 20)
as Jeff already pointed out. Obviously it is easier to write:
p[(1:length(p)) <= 20]

Let's say you want to select the odd numbers in p:
p<-1:10
as.logical(p%%2)
[1]  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE
p[as.logical(p%%2)]
[1] 1 3 5 7 9
The as.logical() has to be included as the extractor function tries
use integers as indices

So the problem is really to reduce your selection criteria to a vector
of TRUER/FALSE values.

Jim

On Mon, Feb 6, 2023 at 1:07 AM 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.
>
> Best regards,
> Upananda
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help