【发布时间】:2016-09-23 13:44:20
【问题描述】:
如何对两个 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 循环或嵌套应用的情况下编写上面显示的示例?
【问题讨论】:
-
如果您提供 reproducible example 并提供示例输入和所需输出,会更容易提供帮助。
-
可能你可以在两个data.frames上使用
unlist然后mapply -
unlist 已经使用 mapply() 完成了这项工作。谢谢!
标签: r loops dataframe sequence apply