簡體   English   中英

如何在引號中引用 function arguments?

[英]How to refer to the function arguments in quotes?

我將 function 指定為 plot 圖形,如下所示:

func.plot <- function(z){
  df %>%
    ggplot(aes(z)) + 
    geom_histogram(aes(y =..density..), 
                   binwidth = 0.004,
                   col="red", 
                   fill="green", 
                   alpha=.2) + 
    geom_density(col=2) + 
    labs(title="title", x="z", y="vertical axis")
}

目的是為數據集中的一些變量生成直方圖,因此在這個 function 中,我還想使用變量名稱作為x軸的標題,以便使圖區分開來。 但是,當使用諸如func.plot(var)之類的變量調用 function 時,會出現錯誤提示:

不知道如何為 tbl_ts/tbl_df/tbl/data.frame 類型的 object 自動選擇比例。 默認為連續。

錯誤:美學長度必須為 1 或與數據 (883) 相同:x

我有幾個問題:

  1. 對於這個特定的 function,如何解決?

  2. 更一般地說,有時我想編寫引用引號中的參數的函數,例如上面的 x 標題。 另一個簡單的例子是像這樣讀取或寫入數據:

func.write <- function(x){
  write.csv(x, file="x.csv", row.names=FALSE)
}

當使用func.write(df)調用時,此 function 也未正確實現。 它將寫入數據,但名稱為"x.csv"

根據您想要傳遞輸入 arguments 的方式,您可以使用以下 function 之一。

要通過引用的 arguments:

library(ggplot2)
library(rlang)

func.plot_quoted <- function(df, z){
   df %>%
     ggplot(aes(!!sym(z))) + 
     geom_histogram(aes(y =..density..), 
                        binwidth = 0.004,
                        col="red", 
                        fill="green", 
                        alpha=.2) + 
     geom_density(col=2) + 
     labs(title="title", x=z, y="vertical axis")
}

可以用作

func.plot_quoted(mtcars, "cyl")

並通過未引用的 arguments

func.plot_unquoted <- function(df, z){
    df %>%
      ggplot(aes({{z}})) + 
      geom_histogram(aes(y =..density..), 
                     binwidth = 0.004,
                     col="red", 
                     fill="green", 
                     alpha=.2) + 
      geom_density(col=2) + 
      labs(title="title", x={{z}}, y="vertical axis")
} 

可以用作

func.plot_unquoted(mtcars, cyl)

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM