मैंने प्लॉट बनाने के लिए एक फंक्शन लिखा है, जो कुछ इस तरह दिखता है:

getSecPlot <- function(data, xvar, yvar, yvarsec, groupvar, ...){

  sec_plot <- ggplot(data, aes_string (x = xvar, group = groupvar)) +
      geom_col(aes_string(y = yvar, fill = groupvar, alpha = 0.5), position = "dodge") +
      geom_line(aes(y = yvarsec,  color = gender)) 

  }

मैं इस फ़ंक्शन को बदलना चाहता हूं। कभी-कभी कोई समूहवार नहीं होता है। उस स्थिति में, मुझे एक प्लॉट रखना पसंद है जैसे:

  sec_plot <- ggplot(data, aes_string (x = xvar, group = 1)) +
      geom_col(aes_string(y = yvar), fill = "green") +
      geom_line(aes(y = yvarsec,  color = gender)) 

तो, मैं इसे एक ही समारोह में एक साथ रखना चाहता हूं। कुछ इस तरह:

getSecPlot <- function(data, xvar, yvar, yvarsec, ...){

if (exists groupvar){

  sec_plot <- ggplot(data, aes_string (x = xvar, group = groupvar)) +
      geom_col(aes_string(y = yvar, fill = groupvar, alpha = 0.5), position = "dodge") +
      geom_line(aes(y = yvarsec,  color = gender)) 

} else {

      sec_plot <- ggplot(data, aes_string (x = xvar, group = 1)) +
          geom_col(aes_string(y = yvar), fill = "green") +
          geom_line(aes(y = yvarsec,  color = gender)) 

  }

if (exists groupvar) सिर्फ उदाहरण के लिए है - मैं कैसे जांच सकता हूं कि तर्क आर में सौंपा गया है या नहीं?

मैं इस बारे में अनिश्चित हूं कि ... कैसे काम करता है। एक बार जब मैंने groupvar फ़ंक्शन तर्क से निकाल लिया, तो फ़ंक्शन अब काम नहीं करता था:

getSecPlot <- function(data, xvar, yvar, yvarsec, ...){

  sec_plot <- ggplot(data, aes_string (x = xvar, group = groupvar)) +
      geom_col(aes_string(y = yvar, fill = groupvar, alpha = 0.5), position = "dodge") +
      geom_line(aes(y = yvarsec,  color = gender)) 

  }

plot.SeverityYearly <- getSecPlot(freqSevDataAge, xvar = "agegroup", yvar = "severity", yvarsec = "frequency", groupvar = "gender")

aes_string में त्रुटि (x = xvar, group = groupvar): ऑब्जेक्ट 'ग्रुपवार' नहीं मिला not

0
Nneka 19 अप्रैल 2020, 15:50

1 उत्तर

सबसे बढ़िया उत्तर

group_var मौजूद है या नहीं यह जांचने के लिए आप missing का उपयोग कर सकते हैं। यह सरल उदाहरण देखें:

temp <- function(a, b, group_var) {
   if(missing(group_var))
      a + b
   else
      a + b + group_var
}

temp(1, 2, 3)
#[1] 6
temp(1, 2)
#[1] 3
2
Ronak Shah 19 अप्रैल 2020, 12:55