假设我有一个包含列 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
我该怎么做呢?我猜这与 {s,l,t}apply(x, f) 类似,但我无法弄清楚。
正如@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
我确信你会想要重命名输出列
因此,当我输入此内容时,@joshua 展示了另一种方法,使用ddply
。我的例子的不同之处在于adply
将输入数据帧视为数组。adply
不使用“group by”变量row
@joshua 创建的。他是怎么做的,我也是这么做的,直到哈德利向我透露了adply()
方法。在上述问题中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)