2010-08-02 15 views
9

Estoy interesado en la manipulación de vectores (funcionales) en R. Específicamente, ¿cuáles son los equivalentes de R a los map y grep de Perl?¿Cuáles son los equivalentes de R al mapa y grep de Perl?

El siguiente script Perl greps incluso los elementos de la matriz y los multiplica por 2:

@a1=(1..8); 
@a2 = map {$_ * 2} grep {$_ % 2 == 0} @a1; 
print join(" ", @a2) 
# 4 8 12 16 

¿Cómo se puede hacer eso en R? Tengo este momento, utilizando sapply para Perl de map:

> a1 <- c(1:8) 
> sapply(a1, function(x){x * 2}) 
[1] 2 4 6 8 10 12 14 16 

¿Dónde puedo obtener más información sobre este tipo de manipulaciones de matriz funcionales en R?

Además, ¿existe un Perl a libro de frases, similar al Perl Python Phrasebook?

Respuesta

7

R tiene "grep", pero funciona completamente diferente de lo que está acostumbrado. R tiene algo mucho mejor construido en: tiene la capacidad de crear rebanadas matriz mediante una expresión booleana:

a1 <- c(1:8) 
a2 <- a1 [a1 %% 2 == 0] 
a2 
[1] 2 4 6 8 

Para mapa, se puede aplicar una función como lo hizo anteriormente, pero es mucho más simple que acaba de escribir:

a2 * 2 
[1] 4 8 12 16 

O en un solo paso:

a1[a1 %% 2 == 0] * 2 
[1] 4 8 12 16 

nunca he oído hablar de un Perl para libro de frases R, si alguna vez encontrar uno que me haga saber! En general, R tiene menos documentación que perl o python, porque es un lenguaje tan nicho.

10

los rápidos:

  • Además sapply, hay también lapply(), tapply, by, aggregate y más en la base. Luego hay montones de paquetes adicionales en CRAN, como plyr.

  • Para programación funcional básica como en otros idiomas: Reduce(), Map(), Filter(), ... todos los cuales están en la misma página de ayuda; Pruebe help(Reduce) para comenzar.

  • Como se señaló en la respuesta anterior, la vectorización es aún más adecuada aquí.

  • En cuanto a grep, R en realidad tiene tres motores regexp incorporados, incluida una versión basada en Perl de libpcre.

  • Parece que faltan algunas cosas de R que están ahí. Sugeriría un buen libro reciente sobre R y el lenguaje S; mi recomendación sería Chambers (2008) "Software for Data Analysis"

Cuestiones relacionadas