【发布时间】:2016-08-08 17:48:51
【问题描述】:
我在使用 for 循环连接来自 2 个不同数据帧的数据时遇到了一些困难。 我将展示每个数据帧的一部分,但是您需要知道这些数据帧的长度要大得多,因此我需要使用循环来解决我的问题。我不能放图片,因为我是新来的,所以我会试着打出一小部分来说明清楚:
数据框 1:
Four columns: Treenr, X, Y and d
first row: 1, 191.5, 240, 23.93
second row: 2, 213.5, 153.5, 8.14
数据框 2
Three columns: Liananr, Xl, Yl
first row: 1, 191.5, 240, 23.93
second row: 2, 213.5, 153.5, 8.14
X 和 Y 是坐标。
d 是一个距离。
最终我想为每个藤本植物计算这个:r = sqrt((Xl-X)^2+(Yl-Y)^2)。我希望它在一个新的数据框中,给我 4 列:
Liananr, Treenr, r and d.
这应该给出 10 行,因为对于每个链接到 Treenr (2) 的 liananr (5) 这分别为每一列提供了以下行:
row 1: 1, 1, 91.11, 23.93
row 2: 2, 1, 73.56, 29.93
row 3: 3, 1, 73.56, 29.93
row 4: 4, 1, 73.56, 29.93
row 5: 5, 1, 55.22, 23.93
row 6: 1, 2, 53.50, 8.14
row 7: 2, 2, 58.22, 8.14
row 8: 3, 2, 58.22, 8.14
row 9: 4, 2, 58.22, 8.14
row 10: 5, 2, 74.50, 8.14
我将新数据框称为“已链接”,首先我定义:
X <- dataframe1$X
Y <- dataframe1$Y
Xl <- dataframe2$Xl
Yl <- dataframe2$Yl
for (i in 1:length(dataframe1$Treenr) {
for (j in 1:length(dataframe2$Liananr) {
Linked$Liananr <- dataframe2$Liananr
Linked$Treenr <- dataframe1$Treenr
Linked$r <- sqrt((Xl[j,]-X[i,])^2+(Yl[j,]-Y[i,])^2)
Linked$d <- dataframe1$d
}
}
我最大的问题是我不知道如何在这个循环中使用 i 和 j。
【问题讨论】: