映射数据帧的行

Bre*_*ett 10 r

假设我有列C1,...,CN和函数f,它接受这个数据帧作为参数的列的数据帧.如何将f应用于数据帧的每一行以获得新的数据帧?

例如,

x = data.frame(letter=c('a','b','c'), number=c(1,2,3))
# x is
# letter | number
#      a | 1
#      b | 2
#      c | 3

f = function(letter, number) { paste(letter, number, sep='') }

# desired output is
# a1
# b2
# c3
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?我猜它是{s,l,t}应用(x,f)的东西,但我无法弄明白.

JD *_*ong 11

正如@greg指出的那样,paste()可以做到这一点.我怀疑你的例子是一个更普遍的问题的简化.在过去与此斗争之后,如前一个问题所示,我最终使用了plyr包来处理这类事情.plyr做了很多,但对于这些事情很简单:

> require(plyr)
> adply(x, 1, function(x) f(x$letter, x$number))
  X1 V1
1  1 a1
2  2 b2
3  3 c3
Run Code Online (Sandbox Code Playgroud)

我确定你要重命名输出列

因此,当我输入此内容时,@ joshua显示了一种替代方法ddply.我的例子的不同之处在于adply将输入数据框视为数组.adply不使用row@joshua创建的"group by"变量.他是怎么做到的,这正是我在做这件事之前,直到哈德利给我的adply()方法.在上述问题中.


Gre*_*reg 7

paste(x$letter, x$number, sep = "")
Run Code Online (Sandbox Code Playgroud)