2011-08-18 11 views
5

de R : tiene algunas trampas conocidas:¿Cómo puedo satisfacer mis problemas con el operador `:` de R? operador

a = c(1, 2, 3) 
set.zero = function(n) a[1:n] <<- 0 
set.zero(0) 
# `a` is now c(0, 2, 3) 

tan sólo pudiera escribir una función que resuelve este haciendo 1:0 dar una vector vacío, pero yo preferiría que hubo un tiempo razonablemente breve base o el paquete CRAN que proporcionó dicha función (idealmente reemplazando : si eso no es demasiado peligroso). Intenté buscar uno pero no puedo encontrarlo.

¿Existe tal cosa?

Respuesta

6

Prueba esto:

set.zero = function(n) a[seq_len(n)] <<- 0 

Tenga en cuenta que seq(1, length = n) funciona tan bien.

+0

Agradable. Aunque requiere aritmética generalizar a 'a: b'. – Owen

+1

@Owen Arithmetic !? ¡El horror! ¡El horror! ;) – joran

+0

@Owen, han agregado algo de información sobre eso. –