如何在两个Dataframe上的每个元素上应用函数?
在以下示例中,我想阻止双重for循环:
for(m in 1:nrow(DF1)) {
for(n in 1:ncol(DF1)) {
mySeq <- seq(DF1[m,n], DF2[m,n], 0.01)
# Do the rest with mySeq ...
}
}
我的目的是在具有相同索引的两个数据帧的每个元素之间创建序列。
最快的解决方案和第一个解决方案是mySeq <- seq(DF1, DF2, 0.01)
。但是这样做是行不通的,因为seq(from,to)
的论点必须是长度为1.
我的第二次尝试是使用apply()
。这不起作用,因为它仅适用于一个数据帧。然后我搜索了一个合适的应用解决方案并找到了mapply()
。使用mapply可以应用于两个数据帧,但不可能应用于数据帧中的每个元素,而是应用于da数据帧的行。而且我不想使用嵌套的apply()调用。
所以我的问题是如何在不使用双重for循环或嵌套应用的情况下编写上面显示的示例?
答案 0 :(得分:0)
我不确定你试图在元素上应用什么函数,但我已经使用了sweep()函数来处理类似的事情。例如:
df = data.frame(x = 1:10, y = 1:10, z = 1:10)
sweep(df, 1:2, 1)
这里扫描遍历df的每个元素并减去1但您可以指定自己的函数来操作元素。然后,您可以将2个数据框绑定在一起并使用sweep()或单独应用它。