【发布时间】:2015-03-13 21:27:19
【问题描述】:
我看到很多类似的问题,但没有什么能很好地暗示如何解决我的具体问题。我有一个数据框(很好地融合了),其中包括两个因子列和两列,我想用它们提供一个有两个参数的函数。我想基本上做 ddply 所做的事情,因为它会为两个因素组合中的每一个提供两个参数给函数。在我的例子中,函数“ros”(包“CensReg”)的第二个参数属于“logical”类,所以我创建了一组虚拟的 True 或 False 标记来与数字数据一起使用。
df <- data.frame(f1=c(rep("A",5), rep("B",5), rep("C",5)), f2=c(rep("Yes",10), rep("No",5)), d1=c(2,2,2,rnorm(12,9)), d2=(c(rep("TRUE",3),rep("FALSE",12))=="TRUE"))
我正在尝试做这样的事情:
ddply(.data = df, .variables = .(f1, f2), function(x,y) ros(d1, d2))
我对 ddply 有什么遗漏可以防止这种情况发生吗?我收到错误“错误:找不到对象'd1'”。 ros函数的输出类如下:
class(ros(x,y))
[1] "ros" "lm"
如果这弄乱了 ddply,我可以看到从函数中提取我需要的东西,类似于从线性回归中提取系数:
ddply(.data = df, .variables = .(f1, f2), function(x,y) mean = mean(ros(d1, d2)))
(相信我,您可以调用 mean(ros(.....)) 并返回一个值;基本上,它对具有“审查”数据点(低于测试检测限)的数据集进行稳健回归,并让您计算可以使用“均值”、“中位数”等手动调用的汇总统计信息)
任何关于如何将两个 d1 和 d2 参数传递给 ddply 中的函数的指导都可以继续进行!
【问题讨论】: