R 带向量索引的向量加法

R 带向量索引的向量加法,r,R,这很可能在其他地方有答案,但我很难制定问题的措辞,以找到我需要的 我有两个数据帧,A和B,A的行数比B多。我想根据A的一列从B中查找一个值,并将其添加到A的另一列。类似于: A$ColumnToAdd + B[ColumnToMatch == A$ColumnToMatch,]$ColumnToAdd 但我发现,在NAs负载下: Warning in `==.default`: longer object length is not a multiple of shorter object l

这很可能在其他地方有答案,但我很难制定问题的措辞,以找到我需要的

我有两个数据帧,A和B,A的行数比B多。我想根据A的一列从B中查找一个值,并将其添加到A的另一列。类似于:

A$ColumnToAdd + B[ColumnToMatch == A$ColumnToMatch,]$ColumnToAdd
但我发现,在NAs负载下:

Warning in `==.default`: longer object length is not a multiple of shorter object length
我可以用一个凌乱的for循环来完成它,但我正在寻找更快更优雅的东西


谢谢

如果我正确理解了您的问题,您正在寻找a或a,正如评论中所建议的那样

下面是一个简单的示例,用于使用符合您所描述内容的虚拟数据

library(tidyverse)

# Some dummy data
ColumnToAdd <- c(1,1,1,1,1,1,1,1)
ColumnToMatch  <- c('a','b','b','b','c','a','c','d')
A <- data.frame(ColumnToAdd, ColumnToMatch)
ColumnToAdd <- c(1,2,3,4)
ColumnToMatch <- c('a','b','c','d')
B <- data.frame(ColumnToAdd, ColumnToMatch)

# Example using merge
A %>% 
  merge(B, by = c("ColumnToMatch")) %>%  
  mutate(sum = ColumnToAdd.x + ColumnToAdd.y)                    

# Example using join
A %>% 
  inner_join(B, by = c("ColumnToMatch")) %>% 
  mutate(sum = ColumnToAdd.x + ColumnToAdd.y)    
库(tidyverse)
#一些虚拟数据

ColumnToAdd如果
A
的行数比
B
多,那么
B$ColumnToMatch==A$ColumnToMatch
应该如何工作?换句话说,请添加一个具有预期结果的可复制示例以澄清问题。您好,这听起来像是我们所说的
合并
加入
-类型的问题。例如,请查看
dplyr::internal\u join
的帮助示例。这些应该向您展示如何从两个data.frames中创建一个包含两列和匹配行的DF,然后您可以执行一个简单的
sum