R

时间:2016-11-10 11:43:45

标签: r lookup

这里有一个非常简单的问题。我们假设我们在水柱中随机放置了一定量的颗粒。我们有关于每个粒子深度的信息(df),我们有水柱的温度分布(剖面)。

temp <- seq(4,20,by=(20-4)/90)
depth1 <- c(1:91)
profile <- data.frame(depth1, temp)

id <- c(1:182)
depth2 <- c(rep(5:45,3),50:91,1:17)
df <- data.frame(id, depth2)

在给定深度返回特定粒子(例如ID = 13)的环境温度最简单的方法是什么?这种情况下的输出应该是[1] 6.844444,因为17米处的温度是6.844444,正如您在&#34; profile&#34;中看到的那样。返回需要是单个值,命令应尽可能短。它会在函数()中重复使用。

使用[方括号]左右必须有一个非常简单的解决方案......

感谢您的帮助......

罗伯特

2 个答案:

答案 0 :(得分:0)

自己找到了......

profile[profile$depth1==df[df$id==13,"depth2"],"temp"]

非常感谢, 罗伯特

答案 1 :(得分:0)

您可以将其缩短到

profile[df[df$id==13, "depth2"], "temp"]

内部表达式的计算结果为depth1的数值,而不是逻辑向量。

如果目标值始终位于已知列索引处,则甚至更短:

profile[df[df$id==13, 2], 2]