R
如果这是非常基本的问题,我很陌生,所以请原谅我。使用下面的说明,我编辑了这个问题,希望更有意义。
我有一个d
看起来像这样的数据框
SAMPLE <-c("blueberry", "broccoli")
OPT1 <-c("apple", "beef")
OPT2 <-c("oatmeal", "bacon")
RESPONSE <- c("oatmeal", "beef")
d <- data.frame(SAMPLE,OPT1,OPT2, RESPONSE)
为新数据添加 NA 列
d$OPT1.D <- rep("NA",nrow(d));
和距离矩阵dist
X <-c("blueberry", "beef", "oatmeal", "broccoli")
blueberry <-c("0", "0.17", "0.09", "0.21")
beef <-c("0.15", "0", "0.979", "0.75")
oatmeal <- c("0.09", "0.375", "0", "0.71")
broccoli <- c("0.25", "0.671", "0.45", "0")
dist <- data.frame(X,blueberry,beef, oatmeal, broccoli)
所以我想在dist
ford$RESPONSE
和中找到行/列匹配d$SAMPLE
。在 的新列中d$OPT1.D
,第一个条目应该是0.09
,即 'oatmeal' 和 'blueberry' 之间的距离dist
。第二个条目应该是0.671
“牛肉”和“西兰花”之间的距离。
希望这更有意义?我使用了下面的代码,d$OPT1.D <- dist[cbind(d$RESPONSE, d$SAMPLE)]
但它返回的是文本,而不是数字。非常感谢。
总的来说,这似乎应该是一个相当简单的操作,但在搜索了一下之后,我不知道这是否最好由 FOR 循环或 data.table 之类的包来完成。建议将不胜感激!