r - 将绘图放入函数中
问题描述
我有以下功能:
library(dplyr)
apply_fun <- function(data) {
data %>%
group_by(Type) %>%
summarise(across(starts_with('x'), list(median = median,
first_quartile = ~quantile(., 0.25),
third_quartile = ~quantile(., 0.75))))
}
它为我提供了每列的数据集的中位数和第一和第三四分位数,对于每个“类型”,数据集的结构如下:
Type x1 x2 x3 ...
1: type1 1.54 1.48 1.88
2: type2 1.46 1.99 1.48
3: type1 2.01 1.02 1.03
...
该函数产生如下数据:
x1_median x1_first_quartile x1_third_quartile x2_first...
type1 1.505 1.122 ...
type2 1.488 1.026 ...
... ...
我有其他以相同方式构建的数据集。我想在函数中包含每个类型的中位数和四分位数与 x 值的图。x 值是列名中的数字,不一定从 1 开始。类似于:
我为一个特定的案例制作了这张图。
plot(some_vector, unlist(FactorMedians[1, 2500]), type = "l", las = "1",
main = "Median values by Factor")
lines(some_vector, unlist(FactorMedians[2, 2500]), type = "l")
lines(some_vector, unlist(FactorMedians[3, 2500]), type = "l")
lines(some_vector, unlist(FactorMedians[4, 2500]), type = "l")
lines(some_vector, unlist(FactorMedians[5, 2500]), type = "l")
我不知道如何为此找到一般形式。
因子中位数计算如下:
library(dplyr)
FactorMedians = mydata %>%
group_by(Type) %>%
summarise(across(starts_with('x'),
median, probs = quant0, na.rm = TRUE))
如果我想要的不清楚,可以看看我之前的问题如何创建一个函数来计算每列数据、每个数据因子的中位数和四分位数?
解决方案
你的意思是这样的?
# make dummy data
x <- 1:20
y <- data.frame(a=rnorm(20), b=rnorm(20), c=rnorm(20))
# prepare plot area
plot(NULL, xlim = range(x), ylim = range(y), xlab = "X", ylab = "Y")
# sapply ~= 'foreach', seq_len = sequence from 1 to n
sapply(seq_len(ncol(y)), function(i){
lines(x, y[,i], type = "l", col = i)
})
产量
推荐阅读
- grafana - Grafana-server 初始化失败:找不到配置默认值
- python - 使用Python组合excel文件的代码问题
- apache-kafka - kafka 0.11 中的 KafkaUtils 类
- c# - 枚举值转换/转换为 Int32 c#
- server - 无法从外部 IP 访问 Minecraft 服务器
- angular - Angular中表格单元格上的单击事件
- python - 如何在没有 ''[] 的情况下打印
- vue.js - 我无法使用 vue 在表格中显示数据
- youtube-data-api - 将“madeForKids”参数添加到“youtube.liveBroadcasts.insert”API 时出现 500 错误
- javascript - 在下拉列表中,将 optgroup 名称设置为 JS 在 Firefox 中不起作用的选定选项文本