2012-08-10 14 views
10

निम्नलिखित कोड आमतौर पर इतने पर देखा जाता है जब यह एक संग्रह के सूचकांक मूल्यों पर पुनरावृत्ति की बात आती है:सूचकांक यात्रा मुहावरा

for (i in 1:length(x)) { 
    # ... 
} 

कोड असामान्य व्यवहार करता है जब संग्रह खाली है क्योंकि 1:length(x)1:0 जो i देता हो जाता है मूल्य 1 और 0

iterate <- function(x) { 
    for (i in 1:length(x)) { 
     cat('x[[', i, ']] is', x[[i]], '\n') 
    } 
} 

> iterate(c(1,2,3)) 
x[[ 1 ]] is 1 
x[[ 2 ]] is 2 
x[[ 3 ]] is 3 

> iterate(c()) 
x[[ 1 ]] is 
x[[ 0 ]] is 

मैं एक दृश्य जब x रिक्त है लेकिन मैं इसे याद नहीं कर सकते कोई तत्व है कि परिभाषित करने के लिए एक सुंदर मुहावरा देखकर याद। आप किस मुहावरे का उपयोग करते हैं?

उत्तर

12

या तो seq या seq_along आपकी रुचि की वस्तु खाली होने पर आपको कुछ और उचित बताते हैं।

> x <- NULL 
> seq(x) 
integer(0) 
> seq_along(x) 
integer(0) 
> x <- rnorm(5) 
> seq(x) 
[1] 1 2 3 4 5 
> seq_along(x) 
[1] 1 2 3 4 5 
+0

बिल्कुल सही, 'seq_along' मैंने देखा मूर्खता था। – Sim

+1

लेकिन यदि आपको इंडेक्स वैरिएबल की आवश्यकता नहीं है और बस कुछ के तत्वों पर लूप करना चाहते हैं, तो llyly/sapply/vapply में से एक या प्लीयर पैकेज से कुछ अधिक सुरुचिपूर्ण हो सकता है। – Spacedman

+0

@ स्पेसमैन बहुत सच है और यह निश्चित रूप से ओपी को ध्यान में रखना चाहिए। – Dason

संबंधित मुद्दे