早些时候,我回答了我自己关于在R中向量中思考的问题。但是现在我又遇到了另一个我不能'矢量化'的问题。我知道矢量更快,循环速度更慢,但我不知道如何在矢量方法中执行此操作:对此做一个完整的边际分析。我需要一次删除一个元素,并'数值'的数据框,然后我需要通过删除只有下一个元素再次进行迭代。然后再次......再次......这个想法是对我的数据的一个子集进行完全边际分析。总之,我无法想象如何以矢量有效的方式做到这一点。向量化我的思维:R中的向量运算
我已经缩短了代码的循环部分下来,它看起来是这样的:
for (j in my.data$item[my.data$fixed==0]) { # <-- selects the items I want to loop
# through
my.data.it <- my.data[my.data$item!= j,] # <-- this kicks item j out of the list
sum.data <-aggregate(my.data.it, by=list(year), FUN=sum, na.rm=TRUE) #<-- do an
# aggregation
do(a.little.dance) && make(a.little.love) -> get.down(tonight) # <-- a little
# song and dance
delta <- (get.love) # <-- get some love
delta.list<-append(delta.list, delta, after=length(delta.list)) #<-- put my love
# in a vector
}
所以很明显,我砍死了一堆东西在中间,只是使其不太笨拙。目标是使用更高效的矢量去除j循环。有任何想法吗?
@joran:有必须是编辑30个月以上问题的奖项。 :) – Iterator 2011-08-10 01:29:22
一些版本的死灵法师,也许? – 2011-08-10 15:15:32