gpt4 book ai didi

r - 函数 : when does it not recognize arguments and when does it? 内的 ggplot

转载 作者:行者123 更新时间:2023-12-04 17:36:22 27 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Use of ggplot() within another function in R

(11 个回答)


8年前关闭。




考虑以下两个函数:

library(ggplot2)

testdata <- as.data.frame(cbind(rep(c(1, 4), each = 50), rbinom(100, 50, .5)))
names(testdata) <- c("group", "value")

plotfun1 <- function(color) {
ggplot(data = testdata, aes(x = factor(group, levels = c(0: 4)), y = value)) +
geom_boxplot(color = color)
}

plotfun2 <- function(number) {
ggplot(data = testdata, aes(x = factor(group, levels = c(0: number)), y = value)) +
geom_boxplot(color = 'red')
}

Plotfun1 完美运行,调用
plotfun1('red') 

产生两个漂亮的红色箱线图。然而调用
plotfun2(4)

产生错误信息:

因子错误(组,级别 = c(0:编号)):未找到对象“编号”

显然在某些情况下 ggplot 无法“找到”函数的参数,而在某些情况下确实如此。这里发生了什么?

PS我知道有一个简单的解决方法:
plotfun3 <- function(number) {
plotdata <- testdata
plotdata$group <- factor(plotdata$group, levels = c(0: number))
ggplot(data = plotdata, aes(x = group, y = value)) +
geom_boxplot(color = 'red')
}

我只是想了解发生了什么。)

最佳答案

捕获本地环境并在绘图时使用它:

plotfun2 <- function(number) {
localenv <- environment()
ggplot(data = testdata, aes(x = factor(group, levels = c(0:number)), y = value), environment = localenv ) +
geom_boxplot(color = 'red')
}

plotfun2(4)

关于r - 函数 : when does it not recognize arguments and when does it? 内的 ggplot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17742522/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com