我將使用條件日志制作一個連續圖,特別是:
f <- function(x) {
if (0 < x && x <= 2) {
return (log(x));
} else {
return (x^2*log(x));
}
}
現在,我想繪制它:
ggplot(data.frame(x=seq(0,5,length.out=1000)), aes(x)) geom_function(fun=f)

此代碼在從 on 開始的部分上顯示圖形很好x = 2,但由于某些原因,即使在andx之間,它使用第二個函式,而不是第一個函式。02x^2*log(x)
如果我將 更改為 ,則更容易看到這seq一點seq(0, 2.1, length.out=1000)。

但是為什么會發生這種情況,我該如何解決?我認為我對具有多個條件的if陳述句很好......
uj5u.com熱心網友回復:
if未矢量化。ifelse改為嘗試:
f <- function(x) {
ifelse(test = 0 < x & x <= 2,
yes = log(x),
no = (x^2) * log(x))
}
df <- data.frame(x = seq(0, 5, length.out = 10000))
ggplot(df, aes(x))
geom_function(fun = f)
向量化意味著ifelse采用邏輯向量并將相應的邏輯應用于向量的每個元素,無論是 testTRUE還是FALSE。
if相反,它只能處理一個TRUEor FALSE。如果提供了向量,則僅考慮向量的第一個元素。因此,您可能收到以下警告:
#> Warning messages:
#> 1: In 0 < x && x <= 2 : 'length(x) = 1000 > 1' in coercion to 'logical(1)'
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/523460.html
標籤:rif 语句ggplot2阴谋
上一篇:如何在具有多個圖例的條形圖中編輯ggpattern圖例?
下一篇:識別R中多個自變數的閾值
