在R中动态调用变量

在R中动态调用变量,r,R,我基本上是在尝试做一个类似于查找的工作。以下是我目前掌握的情况: Hotel Rate1 Rate2 Rate3 Rate4 Season Hotel1 225 205 250 155 Rate2 Hotel2 175 165 180 175 Rate1 Hotel3 160 210 210 225 Rate3 Hotel4 230 210 200

我基本上是在尝试做一个类似于查找的工作。以下是我目前掌握的情况:

Hotel   Rate1   Rate2   Rate3   Rate4   Season
Hotel1  225     205     250     155     Rate2
Hotel2  175     165     180     175     Rate1
Hotel3  160     210     210     225     Rate3
Hotel4  230     210     200     150     Rate2
Hotel5  180     160     175     165     Rate4
如您所见,我已经让它吐出了应该是的变量名,现在我正在寻找一种方法让它吐出与该变量名对应的值,如下所示:

Hotel   Rate1   Rate2   Rate3   Rate4   Season  Exp.Rate
Hotel1  225     205     250     155     Rate2     205
Hotel2  175     165     180     175     Rate1     175
Hotel3  160     210     210     225     Rate3     210
Hotel4  230     210     200     150     Rate2     210
Hotel5  180     160     175     165     Rate4     165
我做过一些谷歌搜索,也尝试过玩eval(as.name),但我找不到任何和我想要的完全一样的东西


有什么想法吗?

我们可以使用
行/列
索引方法来提取值。使用行序列使用
match
cbind
创建列索引,并获取与索引对应的数据集子集('df1[2:5]`)的值,并将其分配给“Exp.Rate”

df1$Exp.Rate <- df1[2:5][cbind(1:nrow(df1), match(df1$Season, names(df1)[2:5]))]
df1$Exp.Rate
#[1] 205 175 210 210 165

df1$Exp.Rate谢谢!这个答案起了作用,尽管我不完全理解它是如何工作的。我得到了代码的匹配部分,但是第一部分做了什么,特别是“cbind(1:nrow(df1)”?@SeanJohns
1:nrow(df)
是行的序列,当我们用
match
得到的列索引cbind行索引时,我们说的是从第一行第二列(205)中提取元素,与第二列类似,即第二行、第一列(因为我们只检查第二列到第五列)等等