3
我正在爲空間互爲作用的模型流圖,其中XY循環座標兩者的起點和終點:沒有繪製線中的R
的問題是,我一直使用嵌套的for循環(一個爲起點,目的地之一)繪製這些線,肯定有一個更好的方式在R.
無論如何,以幫助回答這個問題,我設置了一個簡單的可重複的例子與4個來源和2個目的地。可以更快地繪製矩陣的答案是矩陣代數,但不知道從哪裏開始。對其進行測試,並請讓我知道:
o <- data.frame(x = c(3,5,6,1), y = c(8,2,3,2))
plot(o)
d <- data.frame(x = c(5,3), y = c(5,3))
points(d, col="red", pch=3)
beta <- 0.6
dist <- matrix(sqrt(c(o[,1] - d[1,1], o[,1] - d[2,1])^2 +
c(o[,2] - d[1,2], o[,2] - d[2,2])^2), ncol = 2)
s <- dist
for(i in 1:nrow(o)){
for(j in 1:nrow(d)){
s[i,j] <- exp(-beta * dist[i,j])
}
}
for(i in 1:nrow(o)){
for(j in 1:nrow(d)){
lines(c(o[i,1], d[j,1]), c(o[i,2], d[j,2]),
lwd = 2 * s[i,j]/mean(s))
}
}
編輯 - 關於該項目的一些背景,請在這裏看到http://rpubs.com/RobinLovelace/9697
你的第一個'for'循環可以被替換爲'< - exp(-beta * dist)' –
啊是的 - 第一個循環是作爲s的更復雜定義的遺蹟,比如:s < - inc * P [i] * W [j] * exp(-beta * d [i,j])。儘管如此,想象一下,即使在這裏也有切割循環的方法。任何關於線的想法雖然?必須是一種方式! – RobinLovelace
使用'segments()'而不是行? – hadley