दिलचस्प पोस्ट
PHP जीडी अन्य छवि को मुखर करने के लिए एक छवि का उपयोग करें, पारदर्शिता सहित मानव-पठनीय स्ट्रिंग के आकार को परिवर्तित करने के लिए ओब्जेसी / कोको क्लास? जावास्क्रिप्ट का उपयोग कर मैं एक div कैसे बना सकता हूँ और शैली कैसे बना सकता हूं? NSString: isEqual बनाम है EqualToString निकटतम तिथि दिखाने के लिए SQL क्वेरी? किसी POSIXct ऑब्जेक्ट में टाइमज़ोन बदलें पृष्ठ के लिए पृष्ठभूमि रंग प्रदर्शित करें और केंद्र में टेक्स्ट को संरेखित करें एंड्रॉइड जावा लाँग रनटाइमस्टेपशन कैमरे से कनेक्ट होने में विफल रहता है पता लगाएं कि जावा में किस एप्लिकेशन (विंडो) का फ़ोकस है एक चर के लिए हल नहीं किया जा सकता शेल में पाइप के साथ n आज्ञाओं को कनेक्ट करना? जावा 'file.delete ()' निर्दिष्ट फ़ाइल नहीं हटा रहा है कोणीय 2: अपवाद / त्रुटि का सामना करने के बाद एप्लिकेशन क्रैश / अनुत्तरदायी हो जाता है आईफोन ओएस एसडीके <3.2 के साथ काम करने के लिए UI_USER_INTERFACE_IDIOM () कैसे मिलता है @प्लेट का मतलब क्या है?

एक वेक्टर के भीतर डेटा का प्रचार करना

मैं आर सीख रहा हूँ और मैं उत्सुक हूँ … मुझे ऐसा फ़ंक्शन चाहिए जो यह करता है:

> fillInTheBlanks(c(1, NA, NA, 2, 3, NA, 4)) [1] 1 1 1 2 3 3 4 > fillInTheBlanks(c(1, 2, 3, 4)) [1] 1 2 3 4 

और मैंने इसे एक का उत्पादन किया … लेकिन मुझे संदेह है कि ऐसा करने का एक और रास्ता है।

 fillInTheBlanks <- function(v) { ## replace each NA with the latest preceding available value orig <- v result <- v for(i in 1:length(v)) { value <- v[i] if (!is.na(value)) result[i:length(v)] <- value } return(result) } 

वेब के समाधान से एकत्रित समाधान "एक वेक्टर के भीतर डेटा का प्रचार करना"

पैकेज zoo में एक समारोह है na.locf() :

 R> library("zoo") R> na.locf(c(1, 2, 3, 4)) [1] 1 2 3 4 R> na.locf(c(1, NA, NA, 2, 3, NA, 4)) [1] 1 1 1 2 3 3 4 

na.locf : अंतिम अवलोकन आगे चलाया; प्रत्येक 'एनए' को बदलने के लिए जेनेरिक फ़ंक्शन, इससे पहले सबसे हाल ही में गैर- 'एनए' के ​​साथ।

na.locf.default फ़ंक्शन के स्रोत कोड को देखें, इसके लिए na.locf.default आवश्यकता नहीं है।

मैं चिड़ियाघर पुस्तकालय से कुछ न्यूनतम कॉपी और पेस्ट कर रहा हूं (मुझे फिर से इस पर इशारा करने के लिए धन्यवाद) और यह वही है जो मुझे वास्तव में जरूरी है:

 fillInTheBlanks <- function(S) { ## NA in S are replaced with observed values ## accepts a vector possibly holding NA values and returns a vector ## where all observed values are carried forward and the first is ## also carried backward. cfr na.locf from zoo library. L <- !is.na(S) c(S[L][1], S[L])[cumsum(L)+1] } 

बस मज़ा के लिए (क्योंकि यह fillInTheBlanks की तुलना में धीमी है), यहाँ rle समारोह पर निर्भर na.locf का एक संस्करण है:

 my.na.locf <- function(v,fromLast=F){ if(fromLast){ return(rev(my.na.locf(rev(v)))) } nas <- is.na(v) e <- rle(nas) v[nas] <- rep.int(c(NA,v[head(cumsum(e$lengths),-1)]),e$lengths)[nas] return(v) } 

जैसे

 v1 <- c(3,NA,NA,NA,1,2,NA,NA,5) v2 <- c(NA,NA,NA,1,7,NA,NA,5,NA) my.na.locf(v1) #[1] 3 3 3 3 1 2 2 2 5 my.na.locf(v2) #[1] NA NA NA 1 7 7 7 5 5 my.na.locf(v1,fromLast=T) #[1] 3 1 1 1 1 2 5 5 5 my.na.locf(v2,fromLast=T) #[1] 1 1 1 1 7 5 5 5 NA 

एक और सरल जवाब। यह एक पहले मूल्य की देखभाल करता है NA एक मरा हुआ अंत होता है, इसलिए मेरी लूप इंडेक्स 2 से आंकड़े

 my_vec <- c(1, NA, NA, 2, 3, NA, 4) fill.it <- function(vector){ new_vec <- vector for (i in 2:length(new_vec)){ if(is.na(new_vec[i])) { new_vec[i] <- new_vec[i-1] } else { next } } return(new_vec) }