早些時候,我回答了我自己關於在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