R 无法使用匹配函数进行匹配,并提供NA错误
可以使用匹配函数替换相应的值,并提供错误信息R 无法使用匹配函数进行匹配,并提供NA错误,r,R,可以使用匹配函数替换相应的值,并提供错误信息 订阅的工作分配中不允许使用NAs请帮助我获取预期的输出 as1 <- data.frame(ID = c(1,2,3,6), pID = c(21,22,23,26), Values = c(435,33,45,12)) as2 <- data.frame(Values_a = c(435, 676), Values_b = c(
订阅的工作分配中不允许使用NAs
请帮助我获取预期的输出
as1 <- data.frame(ID = c(1,2,3,6),
pID = c(21,22,23,26),
Values = c(435,33,45,12))
as2 <- data.frame(Values_a = c(435, 676),
Values_b = c(544, 676))
as1$Values[match(as2$Values_a, as1$Values)] <- as2$Values_b
Error in as1$Values[match(as2$Values_a, as1$Values)] <- as2$Values_b :
NAs are not allowed in subscripted assignments
当
将676与值匹配时,它返回NA
,并且不能将其作为中的索引子集为1$Values
。如果要使用匹配
尝试:
inds <- !is.na(match(as2$Values_a, as1$Values))
as1$Values[inds] <- as2$Values_b[inds]
当将676与值匹配时,它返回NA
,并且不能将其作为中的索引子集为1$Values
。如果要使用匹配
尝试:
inds <- !is.na(match(as2$Values_a, as1$Values))
as1$Values[inds] <- as2$Values_b[inds]
match
中有一个nomatch
参数。默认情况下,它是NA
。我们可以将其更改为0,这应该与R
中的一样,索引从1开始,而不是从0开始
inds <- match(as2$Values_a, as1$Values, nomatch = 0)
as1$Values[inds] <- as2$Values_b[inds]
注意:包装!在match
周围使用is.na
作为索引可能会导致不正确的输出,因为它基于逻辑值,因为未使用match
索引中的信息。它可以根据不同的值顺序进行赋值在match
中有一个nomatch
参数。默认情况下,它是NA
。我们可以将其更改为0,这应该与R
中的一样,索引从1开始,而不是从0开始
inds <- match(as2$Values_a, as1$Values, nomatch = 0)
as1$Values[inds] <- as2$Values_b[inds]
注意:包装!在match
周围使用is.na
作为索引可能会导致不正确的输出,因为它基于逻辑值,因为未使用match
索引中的信息。它可能导致基于不同值顺序的赋值
as1
# ID pID Values
#1 1 21 544
#2 2 22 33
#3 3 23 45
#4 6 26 12