[英]How to create a data frame in R (without using nested for loops), which records estimations from other vectors?
我想存儲兩個 2D 軌跡的每個點 (x,y) 之間的距離。 所以我有 4 個向量: ax
, ay
具有粒子 a 和bx
的時間相關坐標by
對於粒子 b。 我想創建一個數據框dist
基本上是:
dist[t1,t2] = sqrt((ax[t1]-bx[t2])**2+(ay[t1]-by[t2])**2)
現在我想在不使用t1
和t2
的嵌套 for 循環的情況下執行此操作,因為tmax~1000
將花費大量時間。 是否有任何很酷的數據框技巧或任何apply
方法來實現這一點?
首先,讓我們使數據可重現。 您應該在下一個問題中自己這樣做。
ax <- 1:3
ay <- 4:6
bx <- 3:1
by <- 6:4
R 被矢量化,您不需要在語句中包含索引。
dist <- sqrt((ax-bx)^2+(ay-by)^2)
result <- data.frame(ax, ay, bx, by, dist)
> result
ax ay bx by dist
1 1 4 3 6 2.828427
2 2 5 2 5 0.000000
3 3 6 1 4 2.828427
outer
函數對此很有用,您可以這樣做:
outer(seq_along(ax), seq_along(bx),
function(t1,t2){sqrt((ax[t1]-bx[t2])**2+(ay[t1]-by[t2])**2)})
我對你的計算做了一點改動: bx[t1]
變成了bx[t2]
,我認為這是正確的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.