在数据框中,我有一个带有一些值的向量,以及每个值所属的类别向量。我想将一个函数应用于“按类别”操作的值,所以我使用了tapply。例如,就我而言,我想重新调整每个类别中的值。
但是,tapply 的结果是重新缩放值的向量列表,但我需要统一(或“线性化”回)这个列表,所以我可以将重新缩放值的列添加到我的数据框中。
我正在寻找一种简单的方法来做到这一点。这是一个示例:
x = 1:10
c = factor(c(1,2,1,2,1,2,1,2,1,2))
#I do the rescaling like this:
rescaled = tapply(x,list(c),function(x) as.vector(scale(x)))
# this look like this:
$`1`
[1] -1.2649111 -0.6324555 0.0000000 0.6324555 1.2649111
$`2`
[1] -1.2649111 -0.6324555 0.0000000 0.6324555 1.2649111
# but really, I need to get something like this
[1] -1.2649111 -1.2649111 -0.6324555 -0.6324555 0.0000000 0.0000000
[7] 0.6324555 0.6324555 1.2649111 1.2649111
有什么建议么?
谢谢,阿米特