R newbie就在这里,我想弄清楚如何在数据帧的每一行上应用一个函数,并将结果添加到数据框中。更确切地说,我在下面提供一个例子。
所以说我有:
n = c(2, 3, 5)
s = c("aa", "bb", "cc")
b = c(TRUE, FALSE, TRUE)
df = data.frame(n, s, b)
df
n s b
1 2 aa TRUE
2 3 bb FALSE
3 5 cc TRUE
我的虚拟功能是:
dummyfunc <- function(x)
{
return (x*2)
}
我的目标是在 n 列上应用dummyfunc并获得以下结果:
n s b
1 4 aa TRUE
2 6 bb FALSE
3 10 cc TRUE
我了解到 apply 可以做到这一点,但我无法弄清楚如何在每一行上使用它。
答案 0 :(得分:4)
您不需要申请,只需运行df$n <- dummyfunc(df$n)
。
答案 1 :(得分:4)
您可以使用transform
> (df2 <- transform(df, n=dummyfunc(n)))
n s b
1 4 aa TRUE
2 6 bb FALSE
3 10 cc TRUE
within
也有效
> (df3 <- within(df, n <- dummyfunc(n)))
答案 2 :(得分:0)
回答关于使用apply的问题,试试这个
df <-apply(df["n"],1, function(x) x *2)
1是保证金的值,读取?适用于更多细节。 1告诉应用“应用”每行的功能。 如果您想将它应用于列,则使用2。
虽然我建议使用transform()(如上所述),因为它更适合使用data.frames 只记得将transform()的结果分配回df或另一个data.frame