r - 如何将函数应用于由 R 中的分类变量过滤的一系列数据框
问题描述
我有一个包含 3 个数值变量、1 个结果和 1 个分类变量的数据框 df
我需要执行一个过程,该过程涉及按类别 A 或 B 的不同级别过滤 df,然后将它们转储到诸如 binnedplot 之类的函数中,以检查类别变量和数值变量之间的相互作用。
样本df:
set.seed(10)
df=data.frame(num1=sample(100,60),
num2=sample(100,60),
num3=sample(100,60),
category=as.factor(rep(c("A","B"),30)),
outcome=sample(c(0,1),60, replace=T))
df1=df%>%filter(category=="A")
df2=df%>%filter(category=="B")
binnedplot(df1$num1, df1$outcome)
binnedplot(df2$num1, df2$outcome)
binnedplot(df1$num2, df1$outcome)
binnedplot(df2$num2, df2$outcome)
binnedplot(df1$num3, df1$outcome)
binnedplot(df2$num3, df2$outcome)
更新:
split.dfs<-split(df, df$category)
par(mar=c(1,1,1,1))
par(mfcol=c(2,1))
lapply(split.dfs, function(x) lapply(df[1:3], function(x) binnedplot(x, df$outcome, main=df$category)))
最初我想知道如何通过函数以更具可扩展性的方式做到这一点,例如我可以处理更多的数字和分类列而无需太多重复。
现在使用更新的代码(仍然有错误),我的主要问题是如何使用正确的类别标题标记 3 个 2x1 面板以及如何使用 num1/num2/num3 标记 x 轴以使绘图清晰。
解决方案
您可以使用by
和的组合lapply
:
library(arm)
by(df, df$category,
function(x) lapply(subset(x, select = -c(category, outcome)),
binnedplot, x$outcome))
推荐阅读
- sql-server - 通过 SSH 隧道访问 SQL Server 容器
- python - 如何在使用文件中的组件时覆盖文件?
- node.js - pm2 如何知道要加载什么?
- node.js - net::ERR_CONNECTION_TIMED_OUT 用于部署后从 REACT.js 前端到 node.js 后端的 POST 请求
- python - 海龟中的距离计算没有给出任何结果
- java - 从一个命令运行多个 pom 文件
- docker - Docker Swarm 访问容器到已发布端口上的容器?
- r - 在 GAM beta 回归中为 phi 添加额外的回归器并更改 phi 的链接函数
- javascript - TypeError:无法读取 Vue 中未定义的属性
- ms-access - 请提供 MS-Access 时间表跟踪帮助