R 从列中查找最接近的值并从相邻列中返回编号(在列表中)

R 从列中查找最接近的值并从相邻列中返回编号(在列表中),r,R,我有一个x数据帧的大列表(列表1),每个由2个变量的4个观察值组成。典型的数据帧如下所示: YEAR TEMP 1861 2.09 1862 2.17 1863 2.02 1864 2.04 ............ 我希望在第二列中找到最接近值2的值(但理想情况下不超过2.05且不小于1.95),然后从左侧相邻列返回年份。在Excel中,使用诸如VLOOKUP和INDEX之类的函数很简单,但在R中是否有任何等效函数?忽略需要大于等于1.95且的部分,您的函数是将应

我有一个x数据帧的大列表(列表1),每个由2个变量的4个观察值组成。典型的数据帧如下所示:

YEAR   TEMP
1861    2.09
1862    2.17
1863    2.02
1864    2.04
............

我希望在第二列中找到最接近值2的值(但理想情况下不超过2.05且不小于1.95),然后从左侧相邻列返回年份。在Excel中,使用诸如VLOOKUP和INDEX之类的函数很简单,但在R中是否有任何等效函数?忽略需要大于等于1.95且的部分,您的函数是
应用于列表中的每个元素,即
数据帧

因此,为了使您的陈述有效,您需要使用要进行测试的
x
列:

result <- lapply(List1, function(x) x[which.min(abs(x$TEMP-2)), ])

result您的函数是
应用到列表中的每个元素,即
数据.frames

因此,为了使您的陈述有效,您需要使用要进行测试的
x
列:

result <- lapply(List1, function(x) x[which.min(abs(x$TEMP-2)), ])

<代码> >结果>代码>函数(List1,函数i)$$年[I$$TEMP> = 1.95和$Timp,您需要考虑X是DATA框架,关于<代码> LIpApple(List1,函数i)i年[1] Timp>=1.95和$Timp,你需要考虑X是这些建议的数据。第一个解决方案对于问题的第一部分是很好的,但是添加额外的条件的解决方案由于意外的}而不起作用;@ DJ-AFC确实忘记了一个结束括号,它现在应该工作,如果这不是C,请让我知道。Ase谢谢你的建议。第一个解决方案对问题的第一部分很有效,但是添加额外条件的解决方案由于意外事件而不起作用。};@DJ-AFC确实我忘记了一个右括号,现在应该可以了,如果不是这样,请告诉我
result <- lapply(List1, function(x) x[which.min(abs(x$TEMP-2)), ])
result <- lapply(List1, function(x) x$YEAR[which.min(abs(x$TEMP-2))])
result <- lapply(List1, function(x) {x <- x[x$TEMP <= 2.05 & x$TEMP >= 1.95, ] ; return(x$YEAR[which.min(abs(x$TEMP-2))])})