假设我有列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()
方法.在上述问题中.