2011-08-18 19 views
5

的r :運營商有一些知名的陷阱:如何用R的`:`操作符來滿足我的困境?

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

我可以只寫,通過使1:0給空 載體解決了這個功能,但我更喜歡它,如果有一個合理的簡潔base或提供這種功能的CRAN 包(理想情況下,如果不是太危險,則取代 )。我試圖尋找一個,但無法找到它。

這樣的事情是否存在?

回答

6

試試這個:

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

注意seq(1, length = n)工作爲好。

+0

不錯。雖然它需要算術推廣到'a:b'。 – Owen

+1

@Owen算術!?驚恐的事件!驚恐的事件! ;) – joran

+0

@Owen,添加了一些信息。 –