2012-10-08 10 views
6

Stata lookfor कमांड डेटासेट में चर के लिए खोज करने का एक त्वरित तरीका प्रदान करता है (और यह परिवर्तनीय नाम और लेबल दोनों को खोजता है)। तो lookfor education जल्दी से आपको शिक्षा से संबंधित चर मिलते हैं। आर में एक समकक्ष शॉर्टकट समारोह है?क्या आर में चर के लिए खोज करने का कोई तेज़ तरीका है?

+3

स्टैक ओवरफ्लो में माइग्रेट करने के लिए मतदान करना, लेकिन यदि आप डेटा फ्रेम के साथ काम कर रहे हैं, या 'colnames() 'यदि आप काम कर रहे हैं तो आप'()' कमांड के साथ 'कौन सा() 'कमांड जोड़ सकते हैं एक मैट्रिक्स के साथ – Macro

उत्तर

6

आप आवश्यक जानकारी के लिए डेटा 0frame बस grep कर सकते हैं। फिर आपको वेरिएबल्स के नामों की सूची की तुलना में अधिक जानकारी मिल जाएगी जिनके लिए कोई मेल खाता है। आप नियमित अभिव्यक्तियों का भी उपयोग कर सकते हैं, इस प्रकार आपकी खोज क्षमताओं को बढ़ा सकते हैं। यहाँ एक समारोह के उदाहरण है जो करता है जो आप चाहते हैं (केवल data.frame साथ काम करता है):

lookfor <- 
function (pattern, data, ...) 
{ 
    l <- lapply(data, function(x, ...) grep(pattern, x, ...)) 
    res <- rep(FALSE, ncol(data)) 
    res[grep(pattern, names(data), ...)] <- TRUE 
    res <- sapply(l, length) > 0 | res 
    names(res) <- names(data) 
    names(res)[res] 
} 

सबसे पहले मैं प्रत्येक स्तंभ grep, तो मैं स्तंभ नाम grep। फिर मैं केवल जानकारी रखता हूं कि grep ने कुछ भी मिलान किया है और प्रत्येक कॉलम के लिए इसे अलग से रिकॉर्ड किया है। ... के बजाय आप grep पर किसी भी तर्क को पारित कर सकते हैं। यदि आप इसे छोड़ देते हैं, तो यह फ़ंक्शन एक साधारण स्ट्रिंग मिलान करेगा।

यहाँ एक उदाहरण है:

> dt<- data.frame(y=1:10,x=letters[1:10],a=rnorm(10)) 
> lookfor("a",dt) 
[1] "x" "a" 
2

कैसे के बारे में यह एक oneliner जो मैं एक सत्र के प्रारंभ में चलाने के रूप में:

lkf <- function(d,p) names(d)[grep(p,names(d))] 

जहां d अपने data.frame का नाम है और p पैटर्न है।

तो

d <- data.frame(a=letters[1:10],b=1:10,c=month.name[1:10]) 
lkf(d,'c') 
# [1] "c" 

और यहाँ एक संस्करण है कि आप चर नाम

lookfor <- function(string_to_find, data){ 
    # Extract the arguments and force conversion to string 
    pars <- as.list(match.call()[-1]) 
    data.name <- as.character(pars$data) 
    var <- as.character(pars$string_to_find) 

    # Regular expression search through names 
    result <- names(data)[grep(var, names(data))] 

    if(length(result) == 0) { 
     warning(paste(var, "not found in", data.name)) 
     return(NULL) 
    } 
    else { 
     return(result) 
    } 
} 
0

उद्धृत करने की आवश्यकता नहीं है तो आपको केवल एक को खोजने के लिए चर की सूची हालांकि खोज करने के लिए की जरूरत है कि आप इसके लिए खोज रहे हैं RStudio (v0.99 आगे) में कोड समापन समारोह का उपयोग करना संभव है। बस टाइपिंग शुरू करें और आपको संभावित मैचों की एक सूची मिल जाएगी। तो आपके मामले में education$ टाइप करें और डेटा फ्रेम में निहित चर की एक सूची दिखाई देगी। हालांकि इन्हें स्क्रॉल करें और अपनी इच्छित व्यक्ति का चयन करें।