Это кажется довольно легким:
mapply(c,df,df[,2:1])
x y
[1,] 1 3
[2,] 2 4
[3,] 3 1
[4,] 4 2
Для этого простого случая вам нужно вернуть его обратно в фреймворк данных (поскольку mapply
упрощает его до матрицы):
as.data.frame(mapply(c,df,df[,2:1]))
x y
1 1 3
2 2 4
3 3 1
4 4 2
Важное примечание 1 : Похоже, что обратное отношение типа применяется, когда ваш фреймворк содержит векторы разных типов:
df<-data.frame(x=1:2,y=3:4,z=c('a','b'))
mapply(c,df,df[,c(2:1,3)])
x y z
[1,] 1 3 2
[2,] 2 4 1
[3,] 3 1 2
[4,] 4 2 1
Важное примечание 2 : Это ужасно, если у вас есть факторы.
df<-data.frame(x=factor(1:2),y=factor(3:4))
mapply(c,df[,1:2],df[,2:1])
x y
[1,] 1 1
[2,] 2 2
[3,] 1 1
[4,] 2 2
Итак, если у вас есть все числовые данные, все в порядке.