2012-07-02 13 views
17

है, मैं जॉर्ज क्लूनी के विकिपीडिया पृष्ठ से व्यवसाय जानकारी प्राप्त करने के लिए निम्न वाक्यविन्यास का उपयोग करने की कोशिश कर रहा हूं। आखिरकार मैं विभिन्न व्यक्तित्वों के व्यवसायों पर डेटा प्राप्त करने के लिए एक लूप बनना चाहता हूं।तर्क लंबाई शून्य

Error in if (symbol != "role") symbol = NULL : argument is of length zero 

मुझे यकीन है कि क्यों यह आ रहा है पर रहता है नहीं कर रहा हूँ:

हालांकि, मैं निम्नलिखित समस्या नीचे दिए गए कोड से चलाने के।

library(XML) 
library(plyr) 
    url = 'http://en.wikipedia.org/wiki/George_Clooney' 

# don't forget to parse the HTML, doh! 
    doc = htmlParse(url) 

# get every link in a table cell: 
    links = getNodeSet(doc, '//table/tr/td') 

# make a data.frame for each node with non-blank text, link, and 'title' attribute: 
    df = ldply(links, function(x) { 
       text = xmlValue(x) 
      if (text=='') text=NULL 
     symbol = xmlGetAttr(x, 'class') 
     if (symbol!='role') symbol=NULL 
     if(!is.null(text) & !is.null(symbol)) 
       data.frame(symbol, text)   }) 
+3

सलाह डिबगिंग: http://stackoverflow.com/a/5156351/636656। विशेष रूप से, यहां 'विकल्प (त्रुटि = पुनर्प्राप्ति)' आज़माएं। –

+1

समस्या सबसे अधिक संभावना है कि 'प्रतीक'' NULL' है। देखें कि 'अगर (NULL! = "भूमिका") प्रिंट (' test ')' के साथ क्या होता है। इस तरह कुछ काम करना चाहिए, हालांकि मैंने आपका कोड नहीं चलाया: 'अगर (! Is.null (प्रतीक) और प्रतीक! =' भूमिका ') प्रतीक <- NULL' – GSee

+0

kable में' col.names = my_column_names' का उपयोग करें () 'my_column_names' के साथ आपके वांछित नामों के चरित्र वेक्टर होने के कारण, मेरे लिए यह काम किया! –

उत्तर

29

@gsee उल्लेख किया है, आप जांच करने के लिए है कि symbol इससे पहले कि आप अपने मूल्य की जांच नहीं NULL है की जरूरत है। यहां आपके कोड पर एक मामूली अपडेट है जो काम करता है (कम से कम जॉर्ज के लिए)।

df = ldply(
    links, 
    function(x) 
    { 
    text = xmlValue(x) 
    if (!nzchar(text)) text = NULL 
    symbol = xmlGetAttr(x, 'class') 
    if (!is.null(symbol) && symbol != 'role') symbol = NULL 
    if(!is.null(text) & !is.null(symbol)) 
     data.frame(symbol, text)   
    } 
) 
+0

यदि उत्तर आपकी समस्या का समाधान करता है, तो समाधान के रूप में इसे चुनने के लिए बाईं ओर स्थित टिक पर क्लिक करें। –

0

उपयोग col.names = my_column_names अपने चाहता था नामों में से चरित्र वेक्टर होने के साथ kable() में my_column_names, मेरे लिए यह काम किया! - बेंजामिन टेलकैम्प

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