我尝试使用查找向量为一个键赋值,但不知何故,查找向量似乎不能以相同的方式“科普”我所有的值。
首先,我想向你展示我的查找表,其中“X.box_nr”作为我的值,“durchmesser2019”作为我的键,我创建了一个更大的数据集的子集:
> Durchmesser2019 <- subset(ohneNA, jahr == 2019, select = c(X.box_nr, durchmesser2019))
> Durchmesser2019$durchmesser2019 <- as.numeric(Durchmesser2019$durchmesser2019)
> Durchmesser2019$X.box_nr <- as.numeric(Durchmesser2019$X.box_nr)
> Durchmesser2019
X.box_nr durchmesser2019
42 6 26
56 7 26
65 9 26
106 14 26
119 15 32
121 16 26
171 22 26
230 29 26
234 30 32
270 34 32
273 35 26
290 37 32
301 38 32
329 42 26
366 46 26
370 47 26
386 49 26
422 53 26
442 56 32
466 59 32
479 60 32
530 67 26
577 73 26
589 74 26
596 75 26
607 76 26
659 83 26
887 111 26
958 120 32
980 123 26
989 124 26
1027 129 26
1069 134 26
1292 162 26
1324 166 26
1363 171 32
1429 179 26
1463 183 26
1473 185 32
1515 190 32
1534 192 26
1550 194 32
1564 196 26
1597 200 32
1631 204 32
1676 210 32
1684 211 26
1692 212 32
1747 219 26
1956 245 26
2029 254 26
2068 259 26
2160 270 26
2333 292 26
然后我继续执行以下代码:
Durchmesser2019$durchmesser2019 <- as.numeric(Durchmesser2019$durchmesser2019)
Durchmesser2019$X.box_nr <- as.numeric(Durchmesser2019$X.box_nr)
getdurchmesser2019 <- Durchmesser2019$durchmesser2019
names(getdurchmesser2019) <- Durchmesser2019$X.box_nr
unname(getdurchmesser2019[])
在这里,我发现,如果我将数字53插入最后一个代码的方括号中,我确实得到了正确的密钥,但如果我插入数字74,我得到了“NA”。
你知道为什么会这样吗?
我发现,如果N.box我将数字设置为invertet逗号,我确实会获得www.example.com _nr 74的写入密钥。
但实际上我想知道,为什么这些值不能以相同的方式由查找向量进行,以便能够使用此函数自动执行查找过程:
getdurchmesser_2019 <- function(X.box_nr, lookupvector = getdurchmesser2019){
durchmesser2019 <- unname(lookupvector[X.box_nr])
return(durchmesser2019)
}
我已经尝试将查找表的列设置为数字(参见上面的代码)。
2条答案
按热度按时间46scxncf1#
根据@TarJae给出的答案,如果您提供一个用于索引的数字,它将用于位置匹配,而不是名称匹配。我也使用了他们的示例 Dataframe 。
选项:
它将
Durchmesser2019$X.box_nr
的每个值与53
的值进行比较,并返回一个关于它们是否匹配的true或false向量。然后使用此向量来对数据框的行进行子集化。输出是 Dataframe :(注意,如果找到多个匹配项,则可能有多行)
或者,我们可以使用相同的索引来子集化
$durchmesser2019
列:如果只有一个匹配项,则返回标量。
根据要求,具有以下功能:
bt1cpqcv2#
向量
getdurchmesser2019
的长度为54。54之后的所有值都是NA
。数据:
如果您这样做: