Vì vậy, trước đó tôi đã trả lời câu hỏi của riêng mình về suy nghĩ trong vectơ trong R. Nhưng bây giờ tôi có một vấn đề khác mà tôi không thể 'vector hóa'. Tôi biết vectơ nhanh hơn và chậm hơn, nhưng tôi không thể tìm ra cách làm điều này theo phương pháp vector:Vectorize suy nghĩ của tôi: Hoạt động Vector trong R
Tôi có khung dữ liệu (vì lý do tình cảm mà tôi muốn gọi my.data) mà tôi muốn để thực hiện phân tích cận biên đầy đủ. Tôi cần phải loại bỏ một số yếu tố nhất định tại một thời điểm và 'giá trị' khung dữ liệu sau đó tôi cần phải làm lại lần nữa bằng cách chỉ xóa phần tử tiếp theo. Sau đó, làm lại ... và một lần nữa ... Ý tưởng là thực hiện phân tích cận biên đầy đủ trên một tập hợp con dữ liệu của tôi. Nhưng dù sao, tôi không thể quan niệm làm thế nào để làm điều này trong một cách hiệu quả vector.
Tôi đã rút ngắn một phần vòng lặp của mã xuống và nó trông giống như sau:
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
}
Vì vậy, rõ ràng là tôi bị hack ra một loạt các công cụ ở giữa, chỉ để làm cho nó ít vụng về. Mục đích là loại bỏ vòng lặp j bằng cách sử dụng một cái gì đó hiệu quả hơn. Bất kỳ ý tưởng?
@joran: Có phải là giải thưởng để chỉnh sửa câu hỏi 30 tháng tuổi. :) – Iterator
một số phiên bản của necromancer, có thể? –
Ý tưởng hay. Tôi đang nghĩ điều gì đó dọc theo dòng của một nhà quản lý bảo tàng lịch sử tự nhiên có thể ít bị bệnh tật hơn. Hoặc có thể là Jurassic Park? – Iterator