如何使用R在数据框中的特定列上应用函数?

时间:2014-01-10 21:38:20

标签: r function dataframe

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 可以做到这一点,但我无法弄清楚如何在每一行上使用它。

3 个答案:

答案 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