使用 R 在 data.frame 的同一行内交换特定观察结果

Swap specific observations within the same row of a data.frame using R

A B 
2 3
5 7
7 4
2 8

有什么方法可以交换特定的观察结果吗?我正在尝试交换 A 中的观察结果 > 大于 B 同一行中的观察结果。 在上面的 data.frame 中,A 列第三行的观察结果 (7) > B 列第三行的观察结果 (4) 我的目标是交换两者。

期望的输出

A B
2 3
5 7
4 7
2 8

我试过使用 &

df$A[df$A > df$B] <- df$B[df$A > df$B] & df$B[df$A >df$B] <- df$A[df$A >df$B]

我也尝试过嵌套的 ifelse

ifelse(df$A > df$B, df$A[df$A > df$B] <- df$B[df$A > df$B],
    ifelse(df$A > df$B, df$B[df$A >df$B] <- df$A[df$A >df$B], df$b))

非常感谢任何帮助。

我们可以使用 applyMARGIN=1sort

循环遍历行
df1[] <- t(apply(df1, 1, sort))
df1
#  A B
#1 2 3
#2 5 7
#3 4 7
#4 2 8

或使用 pmax/pmin

重新排列 'A' 和 'B' 中的值
transform(df1, A=pmin(A,B), B= pmax(A,B))