【发布时间】:2018-07-17 15:37:53
【问题描述】:
更新:之前,我使用paste 函数作为示例,而不是任意的myFun 函数。这个问题稍微容易一些,因为paste 实际上可以对向量进行操作,而myFun 则不能。
我想将我自己的函数元素应用于 data.frame 中的每个元素,并将修改后的 data.frame 作为返回值。
例子:
> df <- data.frame(c(1,2,3), c(2,3,4))
> df
c.1..2..3. c.2..3..4.
1 1 2
2 2 3
3 3 4
> df_x <- magical_apply_function(df, function(x) myFun
> df_x
c.1..2..3. c.2..3..4.
1 myFun(1) myFun(2)
2 myFun(2) myFun(3)
3 myFun(3) myFun(4)
对于无法在互联网上的任何地方找到此问题的答案,我感到非常困惑。大多数资源都在谈论 apply、lapply 和 sapply,但这些资源仅适用于向量/列表,并且仅返回列表。
for 循环真的是唯一的方法吗?
【问题讨论】:
-
只需使用
lapply,q.v。下面的@akrun 答案。 -
尽管有以下解决方案,但我很困惑为什么你会感到困惑。收集不同数据是 data.frames 存在的理由。虽然如果您可以将函数应用于整个 DF,则粘贴在这里有效,但通常它应该是一个矩阵。
-
奖励:要应用的函数不能处理向量