为什么dplyr无法生成逐行结果?

为什么dplyr无法生成逐行结果?,r,dplyr,sum,R,Dplyr,Sum,sum和+都无法给出每一行的结果 df <- data.frame(x1=c(1,1),x2=c(2,3),y1=c(NA,1),y2=c(NA,1)) df <- mutate(df, cost = prod(x1,x2,na.rm = T)+prod(y1,y2,na.rm = T),na.rm=T) 预期: x1 x2 y1 y2 cost 1 1 2 NA NA 3 2 1 3 1 1 4 我们可以按行添加prod,否则prod对整列进行乘法,

sum和+都无法给出每一行的结果

df <- data.frame(x1=c(1,1),x2=c(2,3),y1=c(NA,1),y2=c(NA,1))
df <- mutate(df, cost = prod(x1,x2,na.rm = T)+prod(y1,y2,na.rm = T),na.rm=T)
预期:

  x1 x2 y1 y2 cost
1  1  2 NA NA    3
2  1  3  1  1    4

我们可以按行添加
prod
,否则
prod
对整列进行乘法,而我们需要每行总和的乘积

library(dplyr)
df %>%
    rowwise %>%
    mutate(cost = prod(x1,x2,na.rm = TRUE) + prod(y1,y2,na.rm = TRUE)) %>%
    ungroup
# A tibble: 2 x 5
#     x1    x2    y1    y2  cost
#  <dbl> <dbl> <dbl> <dbl> <dbl>
#1     1     2    NA    NA     3
#2     1     3     1     1     4
库(dplyr)
df%>%
行%>%
突变(成本=产品(x1,x2,na.rm=TRUE)+产品(y1,y2,na.rm=TRUE))%>%
解组
#一个tibble:2x5
#x1 x2 y1 y2成本
#      
#1 1 2 NA 3
#2     1     3     1     1     4

prod
用于将向量的所有元素相乘。如果要逐元素乘法,只需使用标准的
*
。唯一的区别是AFAICT,您应该用
1
替换
NA
值,然后只定义
cost=x1*x2+y1*y2
library(dplyr)
df %>%
    rowwise %>%
    mutate(cost = prod(x1,x2,na.rm = TRUE) + prod(y1,y2,na.rm = TRUE)) %>%
    ungroup
# A tibble: 2 x 5
#     x1    x2    y1    y2  cost
#  <dbl> <dbl> <dbl> <dbl> <dbl>
#1     1     2    NA    NA     3
#2     1     3     1     1     4