[英]ggtern custom function object x not found error
我正在嘗試使用 package ggtern 創建一個自定義 function 繪制三元ggtern
這是數據和 function 的示例
library(tidyverse)
library(ggtern)
myData <- tibble(T_x = c(0.461, 0.778, 0.429),
T_y = c(0.126, 0.108, 0.404),
T_z = c(0.413, 0.114, 0.167))
drawTriad <- function(df, x, y, z) {
x <- enquo(x)
y <- enquo(y)
z <- enquo(z)
df %>%
ggtern::ggtern(aes(!!x,
!!y,
!!z)) +
geom_point(size = 2, color = "blue") +
theme_void() +
theme_hidelabels() +
theme(tern.axis.line = element_line(color='darkgray',size=1.5))
}
當我像這樣在 myData 上運行 function 時:
drawTriad(myData, T_x, T_y, T_z)
我收到以下錯誤: FUN(X[[i]], ...) 中的錯誤:object 'x' not found
我怎樣才能讓這個簡單的 function 工作?
幾個選項...
library(ggplot2)
library(magrittr)
library(tibble)
library(ggtern)
選項1
這更簡單:只需重命名源數據框或 tibble 中的變量以適應 ggtern,這避免了點坐標的程序變量問題。
drawTriad <- function(df) {
df %>%
ggtern::ggtern(aes(x, y, z)) +
geom_point(size = 2, color = "blue") +
theme_void() +
theme_hidelabels() +
theme(tern.axis.line = element_line(color='darkgray',size=1.5))
}
drawTriad(myData)
選項 2
這是基於 ggplot2:用於數據分析的優雅圖形https://ggplot2-book.org/programming.html中給出的解釋。 並匹配問題中提出的問題。
drawTriad <- function(df, x, y, z) {
df %>%
ggtern::ggtern(aes_(x = as.name(x), y = as.name(y), z = as.name(z))) +
geom_point(size = 2, color = "blue") +
theme_void() +
theme_hidelabels() +
theme(tern.axis.line = element_line(color='darkgray',size=1.5))
}
drawTriad(df = myData,
x = "T_x",
y = "T_y",
z = "T_z")
由代表 package (v2.0.1) 於 2021 年 12 月 13 日創建
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.