R数据帧中列的成对操作

R数据帧中列的成对操作,r,dataframe,dplyr,R,Dataframe,Dplyr,我有一个这样的数据帧 sample <- data.frame(x1=c(1,2),y1=c(2,1), x2=c(2,4),y2=c(3,4),x3=c(5,2),y3=c(1,6)) 样本方法1 因为它是成对的,所以可以使用mapply来完成 创建两个指向这些对的向量 p1 <- seq(1, 6, by = 2) p2 <- seq(2, 6, by = 2) 结果: [,1] [,2] [,3] [1,] 3 5 6 [2,] 3

我有一个这样的数据帧

sample <- data.frame(x1=c(1,2),y1=c(2,1), x2=c(2,4),y2=c(3,4),x3=c(5,2),y3=c(1,6))

样本方法1

因为它是成对的,所以可以使用
mapply
来完成

创建两个指向这些对的向量

p1 <- seq(1, 6, by = 2)
p2 <- seq(2, 6, by = 2)
结果:

   [,1] [,2] [,3]
[1,]    3    5    6
[2,]    3    8    8`
方法2

如果需要在示例表中输出成对操作,我还喜欢将包
dplyr
wrapr
结合使用

require(dplyr)
require(wrapr)

newcols <- paste0(names(sample)[seq(1, 6, by = 2)], names(sample)[seq(2, 6, by = 2)])

for (i in c(1:3)) {
  wrapr::let(list(RES = newcols[i],
                  COL1 = names(sample)[i],
                  COL2 = names(sample)[i + 1]),
             sample <- dplyr::mutate(sample, RES = COL1 + COL2))}


sample

  x1 y1 x2 y2 x3 y3 x1y1 x2y2 x3y3
1  1  2  2  3  5  1    3    4    5
2  2  1  4  4  2  6    3    5    8
require(dplyr)
要求(wrapr)

newcols方法1

因为它是成对的,所以可以使用
mapply
来完成

创建两个指向这些对的向量

p1 <- seq(1, 6, by = 2)
p2 <- seq(2, 6, by = 2)
结果:

   [,1] [,2] [,3]
[1,]    3    5    6
[2,]    3    8    8`
方法2

如果需要在示例表中输出成对操作,我还喜欢将包
dplyr
wrapr
结合使用

require(dplyr)
require(wrapr)

newcols <- paste0(names(sample)[seq(1, 6, by = 2)], names(sample)[seq(2, 6, by = 2)])

for (i in c(1:3)) {
  wrapr::let(list(RES = newcols[i],
                  COL1 = names(sample)[i],
                  COL2 = names(sample)[i + 1]),
             sample <- dplyr::mutate(sample, RES = COL1 + COL2))}


sample

  x1 y1 x2 y2 x3 y3 x1y1 x2y2 x3y3
1  1  2  2  3  5  1    3    4    5
2  2  1  4  4  2  6    3    5    8
require(dplyr)
要求(wrapr)
newcols这个怎么样

sample <- data.frame(x1=c(1,2),y1=c(2,1), 
x2=c(2,4),y2=c(3,4),x3=c(5,2),y3=c(1,6))
sample_new <- data.frame(x1=c(1,2),y1=c(2,1), 
x2=c(2,4),y2=c(3,4),x3=c(5,2),y3=c(1,6),sumx1y1=(sample$x1 + sample$y1), 
sumx2y2=(sample$x2 + sample$y2),sumx3y3=(sample$x3 + sample$y3))
sample这个怎么样

sample <- data.frame(x1=c(1,2),y1=c(2,1), 
x2=c(2,4),y2=c(3,4),x3=c(5,2),y3=c(1,6))
sample_new <- data.frame(x1=c(1,2),y1=c(2,1), 
x2=c(2,4),y2=c(3,4),x3=c(5,2),y3=c(1,6),sumx1y1=(sample$x1 + sample$y1), 
sumx2y2=(sample$x2 + sample$y2),sumx3y3=(sample$x3 + sample$y3))
sample您希望配对规则(可能也更大的组?)基于数字?您希望配对规则(可能也更大的组?)基于数字?