使用R在data.frame的同一行内交换特定观测值

使用R在data.frame的同一行内交换特定观测值,r,swap,R,Swap,有没有办法交换具体的观察结果?我试图交换A中大于B中同一行的观测值的观测值。 在上面的data.frame中,A(7)列第三行中的观察值是>B(4)列第三行中的观察值,我的目标是将两者互换 期望输出 A B 2 3 5 7 7 4 2 8 我试过使用& A B 2 3 5 7 4 7 2 8 df$A[df$A>df$B]df$B]&df$B[df$A>df$B]df$B] 我还尝试了嵌套的ifelse df$A[df$A > df$B] <- df$B[df$A >

有没有办法交换具体的观察结果?我试图交换A中大于B中同一行的观测值的观测值。 在上面的data.frame中,A(7)列第三行中的观察值是>B(4)列第三行中的观察值,我的目标是将两者互换

期望输出

A B 
2 3
5 7
7 4
2 8
我试过使用&

A B
2 3
5 7
4 7
2 8
df$A[df$A>df$B]df$B]&df$B[df$A>df$B]df$B]
我还尝试了嵌套的ifelse

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(df$A>df$B,df$A[df$A>df$B]df$B],
ifelse(df$A>df$B,df$B[df$A>df$B]df$B],df$B))
任何帮助都将不胜感激


Dre

我们可以使用
apply
MARGIN=1
sort

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))

使用
pmax/pmin
的转换几乎成功。当我使用它时,我的控制台中出现了一个带有我所需输出的data.frame,但当我查看(df)时,data.frame没有改变。我不知道为什么会这样。我正在处理两个以上的专栏,所以我不想使用循环建议。有没有一种方法可以专门针对
a
B
列执行循环?对于第一条注释,
df1
df1[] <- t(apply(df1, 1, sort))
df1
#  A B
#1 2 3
#2 5 7
#3 4 7
#4 2 8
transform(df1, A=pmin(A,B), B= pmax(A,B))