即使在使用 geom_text() 时全局声明了对象,也找不到对象
Object not found even though it is globally declared when using geom_text()
R 抱怨变量不存在,即使它已被全局声明。下面是重现该问题的代码片段:
dataSet2 <- data.frame(FR=c("N", "S", "S","S"))
totalTrx <- 2000
# Errors
ggplot(dataSet2, aes(FR)) +
geom_bar(aes(y = prop.table(..count..) * 100, fill=FR)) +
geom_text(aes(y = prop.table(..count..) * 100 + 2,label = paste0('(', prop.table(..count..)*totalTrx, ')')), stat='count')
# Runs
ggplot(dataSet2, aes(FR)) +
geom_bar(aes(y = prop.table(..count..) * 100, fill=FR)) +
geom_text(aes(y = prop.table(..count..) * 100 + 2,label = paste0('(', prop.table(..count..)*100, ')')), stat='count')
# Also runs
ggplot(dataSet2, aes(FR)) +
geom_bar(aes(y = prop.table(..count..) * 100, fill=FR)) +
geom_text(aes(y = prop.table(..count..) * 100 + 2,label = paste0('(', totalTrx, ')')), stat='count')
知道这里发生了什么吗?使用 prop.table
和使用全局变量似乎相互排斥。
此问题与 ggplot 有关,与 prop.table 无关
如果你在 "aes" 中定义 "totalTrx" 就解决了。
ggplot(dataSet2, aes(FR)) +
geom_bar(aes(y = prop.table(..count..) * 100, fill=FR)) +
geom_text(aes(y = prop.table(..count..) * 100 + 2,label = paste0('(', prop.table(..count..)*totalTrx, ')'), totalTrx = totalTrx), stat='count')
R 抱怨变量不存在,即使它已被全局声明。下面是重现该问题的代码片段:
dataSet2 <- data.frame(FR=c("N", "S", "S","S"))
totalTrx <- 2000
# Errors
ggplot(dataSet2, aes(FR)) +
geom_bar(aes(y = prop.table(..count..) * 100, fill=FR)) +
geom_text(aes(y = prop.table(..count..) * 100 + 2,label = paste0('(', prop.table(..count..)*totalTrx, ')')), stat='count')
# Runs
ggplot(dataSet2, aes(FR)) +
geom_bar(aes(y = prop.table(..count..) * 100, fill=FR)) +
geom_text(aes(y = prop.table(..count..) * 100 + 2,label = paste0('(', prop.table(..count..)*100, ')')), stat='count')
# Also runs
ggplot(dataSet2, aes(FR)) +
geom_bar(aes(y = prop.table(..count..) * 100, fill=FR)) +
geom_text(aes(y = prop.table(..count..) * 100 + 2,label = paste0('(', totalTrx, ')')), stat='count')
知道这里发生了什么吗?使用 prop.table
和使用全局变量似乎相互排斥。
此问题与 ggplot 有关,与 prop.table 无关 如果你在 "aes" 中定义 "totalTrx" 就解决了。
ggplot(dataSet2, aes(FR)) +
geom_bar(aes(y = prop.table(..count..) * 100, fill=FR)) +
geom_text(aes(y = prop.table(..count..) * 100 + 2,label = paste0('(', prop.table(..count..)*totalTrx, ')'), totalTrx = totalTrx), stat='count')