如何在 R 中为每个单独的单元格创建一个方程式

How to make an equation in R for each individual cell

我有 2 个不同大小的列,A 和 B。

一个 | B

5 | 4
1 | 2
3 |

我怎么说If CellA is < CellB then give me CellB-CellA?所以它计算:

“5(A1) 大于 4(B1) 和 2(B2)”所以没有结果

“1(A2) 小于 4(B1) 和 2(B2)” 所以我们有 3 和 1

“3(A3) 小于 4(B1) 且大于 2(B2)” 所以我们有 1

结果 = (3, 1, 1)

我得到的最接近的是: if (A < B) {B - A}

但这只适用于相同大小的列,我希望 A 列的每个单独的单元格与 B 列的每个单独的单元格交互。我该怎么做?

由于不同大小的列,所以它必须是列表而不是 data.frame 所以解决方案:

listAB <- list(A = c(5,1,3) , B = c(4,2))

equ <- function(li){
  result <- vector("numeric")
  for (x in li$A){
    result <- append(result , sapply(li$B , function(y) if(x < y) y - x))
  }
  unlist(result)
}

equ(listAB)
#> [1] 3 1 1

reprex package (v2.0.1)

创建于 2022-05-29