[英]how to pass the strings with quotes as function arguments values
[英]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
我有幾個問題:
對於這個特定的 function,如何解決?
更一般地說,有時我想編寫引用引號中的參數的函數,例如上面的 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.