r - 在 ggplot2 中对 xlab 参数使用 colnames() 会在使用 lapply 时返回 NA
问题描述
我正在尝试使用以下函数创建一个在数据框中绘制多列(总共 36 列)的函数:
big5p1 <- function(i) {
ggplot(big5_pos, aes(x= i, y = title)) +
geom_bar(stat="identity", width=0.5) +
xlab(colnames(big5_pos)[i]) + #Issues with NAs
ylab("Position") +
geom_vline(xintercept = mean(i), color="red")
}
lapply(big5_pos[2:3], big5p1)
当我检查时,colnames(big5_pos[2:36])
我确实得到了每列的正确字符名称列表。但是,当使用 apply 时,只有一些 xlab 被正确打印,其余的只有 NA 作为标签。不知道我忽略了什么,但任何帮助或建议将不胜感激!
解决方案
更改您的函数以接受列名。
library(ggplot2)
big5p1 <- function(i) {
ggplot(big5_pos, aes(x = .data[[i]], y = title)) +
geom_bar(stat="identity", width=0.5) +
xlab(i) +
ylab("Position") +
geom_vline(xintercept = mean(big5_pos[[i]], na.rm = TRUE), color="red")
}
result <- lapply(names(big5_pos)[2:3], big5p1)
推荐阅读
- ruby-on-rails - 将对象传递给删除方法 RAILS 时遇到问题
- javascript - How do I refactor these two functions?
- overriding - Acumatica 覆盖 ARFinChargesApplyMaint 图的计算操作
- r - 无法在 R 中将“列表”数据转换为“整数”或“数字”
- r - 如何使用 pivot_longer 和不同长度的向量绘制双 y 轴?
- android - Fused Location Provider Client 始终将第一个位置返回为 null
- python - 如果列表的第 n 个元素通过条件,我如何选择另一个列表的第 n 个元素?
- javascript - 如何在客户端处理多个请求/API 调用并行的 JWT 刷新令牌?
- ruby-on-rails - 如何在 ruby 中本地安装软件包并共享捆绑包而无需重新捆绑?
- excel - 如何在单个公式中返回 Excel 中当前月份的月初至今日期?