R使用2个数据帧应用函数

R使用2个数据帧应用函数,r,apply,R,Apply,我想使用rminer包中的mmetric函数 我有两个数据集(观察和预测),我想按列应用函数,我该怎么做 预测: aa oo dcl iy sh 2.255 0.648 -0.111 0.111 -0.049 0.239 0.753 -0.972 1.907 0.000 2.521 1.072 -0.107 0.100 -0.068 0.415 1.072 0.735 0.789 0.885 0.101

我想使用rminer包中的mmetric函数 我有两个数据集(观察和预测),我想按列应用函数,我该怎么做

预测:

     aa     oo    dcl     iy     sh
   2.255  0.648 -0.111  0.111 -0.049
   0.239  0.753 -0.972  1.907  0.000
   2.521  1.072 -0.107  0.100 -0.068
   0.415  1.072  0.735  0.789  0.885
   0.101  0.629  0.293  0.740  1.562
   0.496 -0.260 -0.133 -0.078  0.108
观察:

    aa     oo    dcl     iy     sh
   2.255  0.648 -0.111  0.111 -0.049
   0.239  0.753 -0.972  1.907  0.000
   2.521  0.403 -0.107  0.100 -0.068
   0.415  2.713 -0.637  0.789  0.885
   0.101  0.629  0.293  0.740  1.562
   2.606 -0.260 -0.133 -0.078  0.108
对于我可以使用的单列

mmetric(obs[,1], pred[,1], mmetric = "MAE")
如何将其自动应用于整个数据集?我尝试了“应用”,搜索了如何传递更多参数,或者如何处理更多的数据集/列表,但没有找到任何解决方案


谢谢大家!

我们可以使用
Map
在相应列上应用函数
mmetric

mapply(function(x,y) mmetric(x,y, metric='MAE'), obs, pred)
#     aa        oo       dcl        iy        sh 
#0.3516667 0.3850000 0.2286667 0.0000000 0.0000000 
或者我们不需要匿名函数

Map(mmetric, metric='MAE', obs, pred)

您可以对两个data.frames名称进行
lappy
。我的意思是
lappy(名称(obs),函数(x){mmetric(obs[x],pred[x],mmetric=“MAE”)}
你确定吗?我试过了,它一个单元一个单元地应用这个函数,我得到了原始2个数据集的20265个结果,数据集的维数为4053*5@Sojers我更新了我得到的结果。根据您的帖子,您有两个data.frames。我假设你有两个矩阵,而不是“data.frames”。在这种情况下,
mapply(函数(x,y)mmetric(x,y,metric='MAE')、as.data.frame(obs)、as.data.frame(pred))
谢谢!第二个数据集没有强制转换为data.frame,你能解释一下为什么它是按列映射函数工作的吗?可以按行使用吗?还是用手机?只是为了理解代码并将其应用于其他问题@Sojers矩阵是具有暗淡属性的向量。矩阵中的元素就像向量中的单个元素。因此,如果您有一个5x5矩阵,通过使用
Map/mappy
,它将给出25个比较。
data.frame
是一个长度相等的
列表
。因此,
data.frame
列或
list
元素的行为方式与我们预期的相同。