如何在 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
我有 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