Tôi có một khung dữ liệu với ba cột: ref, target, distance. Mỗi ref có khoảng cách được đo tới cùng một tập hợp các mục tiêu và tôi muốn lấy một vectơ khoảng cách tối thiểu cho mỗi ref. Ngay bây giờ tôi đang làm điều này với một vòng lặp for, nhưng nó có vẻ như có phải là một cách để vectorize này.Vectorize cho vòng lặp qua khung dữ liệu trong R
Dưới đây là mã của tôi:
refs <- levels(data$ref)
result <- c()
for (ref in refs) {
# Find the minimum distance for observations with the current ref
# but be sure to protect against ref == target!
best_dist <- min(data[data$ref == ref & data$target != ref,]$distance)
result <- c(result, best_dist)
}
Am Tôi cam chịu bởi có khung dữ liệu của tôi thiết lập theo cách này hoặc là có một cách tốt để vectorize này? Cảm ơn đã giúp đỡ!
Tôi nghĩ rằng bạn có một ')' thiếu ở đó ... – adibender
ta. Sửa lỗi ngay bây giờ .. – mnel
Điều này có vẻ không hoạt động tốt như hiện tại. Tôi nhận được lỗi sau khi thử điều này: ** Lỗi trong Ops.factor (ref, target): tập hợp các yếu tố khác nhau ** Tuy nhiên, ** DT [, list (bestdist = min (distance)), by = ref] ** Sản xuất đầu ra, nhưng không có kiểm tra ref! = target. – weitzner