[R] how to extract the 1st field from a vector of strings

Gabor Grothendieck ggrothendieck at gmail.com
Mon May 31 19:43:23 CEST 2010


Try replacing a space followed by anything (.*) with the empty string:

> x <- c("hsa-let-7a MIMAT0000062 Homo sapiens let-7a",
+ "hsa-let-7a* MIMAT0004481 Homo sapiens let-7a*",
+ "hsa-let-7a-2* MIMAT0010195 Homo sapiens let-7a-2*")
>
> sub(" .*", "", x)
[1] "hsa-let-7a"    "hsa-let-7a*"   "hsa-let-7a-2*"


On Thu, May 27, 2010 at 10:37 AM,  <mauede at alice.it> wrote:
> I have the following vector of strings (shown only the first 3 elements)
>
>> desc[1:3]
> [1] "hsa-let-7a MIMAT0000062 Homo sapiens let-7a"
> [2] "hsa-let-7a* MIMAT0004481 Homo sapiens let-7a*"
> [3] "hsa-let-7a-2* MIMAT0010195 Homo sapiens let-7a-2*"
>> is.vector(desc)
> [1] TRUE
>> A <- unlist(strsplit(desc[1:3], "  "))
>> A
> [1] "hsa-let-7a  MIMAT0000062 Homo sapiens let-7a"
> [2] "hsa-let-7a*  MIMAT0004481 Homo sapiens let-7a*"
> [3] "hsa-let-7a-2*  MIMAT0010195 Homo sapiens let-7a-2*"
>> as.vector(A)
> [1] "hsa-let-7a  MIMAT0000062 Homo sapiens let-7a"
> [2] "hsa-let-7a*  MIMAT0004481 Homo sapiens let-7a*"
> [3] "hsa-let-7a-2*  MIMAT0010195 Homo sapiens let-7a-2*"
>>
> I would like to extract only the first field (of variable length). That is I need a vector containing
> "hsa-let-7a "
> "hsa-let-7a*"
> "hsa-let-7a-2*"
>
> The operator [[]][] works only on the single vector element. I would like to extract the 1st field
> with one single instruction rather than a loop as traditional programming languages request.
>
> Thank you in advance for you help.
> Maura
>
>
>
> tutti i telefonini TIM!
>
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> 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.
>



More information about the R-help mailing list