Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:如何计算可能的列组合的总和_R_Sum_Combinations - Fatal编程技术网

R:如何计算可能的列组合的总和

R:如何计算可能的列组合的总和,r,sum,combinations,R,Sum,Combinations,我计算如下: dataset_definitivo1['CAR-5-4'] = dataset_definitivo1['AR -5'] + dataset_definitivo1['AR -4'] dataset_definitivo1['CAR-5-3'] = dataset_definitivo1['AR -5'] + dataset_definitivo1['AR -4'] + dataset_definitivo1['AR -3'] dataset_definitivo1['CAR-5

我计算如下:

dataset_definitivo1['CAR-5-4'] = dataset_definitivo1['AR -5'] + dataset_definitivo1['AR -4']
dataset_definitivo1['CAR-5-3'] = dataset_definitivo1['AR -5'] + dataset_definitivo1['AR -4'] + dataset_definitivo1['AR -3']
dataset_definitivo1['CAR-5-2'] = dataset_definitivo1['AR -5'] + dataset_definitivo1['AR -4'] + dataset_definitivo1['AR -3'] + dataset_definitivo1['AR -2']
dataset_definitivo1['CAR-5-1'] = dataset_definitivo1['AR -5'] + dataset_definitivo1['AR -4'] + dataset_definitivo1['AR -3'] + dataset_definitivo1['AR -2'] + dataset_definitivo1['AR -1']
dataset_definitivo1['CAR-5 0'] = dataset_definitivo1['AR -5'] + dataset_definitivo1['AR -4'] + dataset_definitivo1['AR -3'] + dataset_definitivo1['AR -2'] + dataset_definitivo1['AR -1'] + dataset_definitivo1['AR 0']
dataset_definitivo1['CAR-5 1'] = dataset_definitivo1['AR -5'] + dataset_definitivo1['AR -4'] + dataset_definitivo1['AR -3'] + dataset_definitivo1['AR -2'] + dataset_definitivo1['AR -1'] + dataset_definitivo1['AR 0'] + dataset_definitivo1['AR 1']
dataset_definitivo1['CAR-5 2'] = dataset_definitivo1['AR -5'] + dataset_definitivo1['AR -4'] + dataset_definitivo1['AR -3'] + dataset_definitivo1['AR -2'] + dataset_definitivo1['AR -1'] + dataset_definitivo1['AR 0'] + dataset_definitivo1['AR 1'] + dataset_definitivo1['AR 2']
dataset_definitivo1['CAR-5 3'] = dataset_definitivo1['AR -5'] + dataset_definitivo1['AR -4'] + dataset_definitivo1['AR -3'] + dataset_definitivo1['AR -2'] + dataset_definitivo1['AR -1'] + dataset_definitivo1['AR 0'] + dataset_definitivo1['AR 1'] + dataset_definitivo1['AR 2'] + dataset_definitivo1['AR 3']
dataset_definitivo1['CAR-5 4'] = dataset_definitivo1['AR -5'] + dataset_definitivo1['AR -4'] + dataset_definitivo1['AR -3'] + dataset_definitivo1['AR -2'] + dataset_definitivo1['AR -1'] + dataset_definitivo1['AR 0'] + dataset_definitivo1['AR 1'] + dataset_definitivo1['AR 2'] + dataset_definitivo1['AR 3'] + dataset_definitivo1['AR 4']
dataset_definitivo1['CAR-5 5'] = dataset_definitivo1['AR -5'] + dataset_definitivo1['AR -4'] + dataset_definitivo1['AR -3'] + dataset_definitivo1['AR -2'] + dataset_definitivo1['AR -1'] + dataset_definitivo1['AR 0'] + dataset_definitivo1['AR 1'] + dataset_definitivo1['AR 2'] + dataset_definitivo1['AR 3'] + dataset_definitivo1['AR 4'] + dataset_definitivo1['AR 5']
然而,我想知道是否有一种方法可以使代码平滑一点。我尝试使用
for
语句,但没有成功

你知道吗


谢谢

我们可以使用
交叉
创建所有组合,然后使用
pmap
循环行,
选择
数据集定义中的列
并通过添加(
+
)列来减少

library(dplyr)
library(tidyr)
library(purrr)
library(stringr)
tmp <- crossing(col1 = -5:5, col2 = -5:5)
nm1 <- paste0("CAR", do.call(paste, tmp))

dataset_definitionvol2 <- tmp %>%
   pmap_dfc(~ dataset_definitionvol %>%
                 select(str_c('AR ', .x:.y)) %>% 
                 reduce(`+`)) %>%
   rename_all(~ nm1) %>%
   bind_cols(dataset_definitionvol, .)
库(dplyr)
图书馆(tidyr)
图书馆(purrr)
图书馆(stringr)
tmp%
减少(`+`))%>%
重命名所有(~nm1)%>%
绑定(数据集定义卷)
数据
dataset\u definitionvol也许您可以尝试
Reduce
如下

out <- list2DF(
  setNames(
    Reduce(`+`, df, accumulate = TRUE)[-1],
    paste0(names(df)[1], ".", names(df)[-1])
  )
)
虚拟数据

> dput(df)
structure(list(`X-5` = c(-0.626453810742332, 0.183643324222082,
-0.835628612410047, 1.59528080213779, 0.329507771815361), `X-4` = c(-0.820468384118015,
0.487429052428485, 0.738324705129217, 0.575781351653492, -0.305388387156356
), `X-3` = c(1.51178116845085, 0.389843236411431, -0.621240580541804, 
-2.2146998871775, 1.12493091814311), `X-2` = c(-0.0449336090152309,
-0.0161902630989461, 0.943836210685299, 0.821221195098089, 0.593901321217509
), `X-1` = c(0.918977371608218, 0.782136300731067, 0.0745649833651906,
-1.98935169586337, 0.61982574789471), X0 = c(-0.0561287395290008,
-0.155795506705329, -1.47075238389927, -0.47815005510862, 0.417941560199702
), X1 = c(1.35867955152904, -0.102787727342996, 0.387671611559369,
-0.0538050405829051, -1.37705955682861), X2 = c(-0.41499456329968,
-0.394289953710349, -0.0593133967111857, 1.10002537198388, 0.763175748457544
), X3 = c(-0.164523596253587, -0.253361680136508, 0.696963375404737,
0.556663198673657, -0.68875569454952), X4 = c(-0.70749515696212,
0.36458196213683, 0.768532924515416, -0.112346212150228, 0.881107726454215
), X5 = c(0.398105880367068, -0.612026393250771, 0.341119691424425,
-1.12936309608079, 1.43302370170104)), class = "data.frame", row.names = c(NA,
-5L))

> df
         X-5        X-4        X-3         X-2         X-1          X0
1 -0.6264538 -0.8204684  1.5117812 -0.04493361  0.91897737 -0.05612874
2  0.1836433  0.4874291  0.3898432 -0.01619026  0.78213630 -0.15579551
3 -0.8356286  0.7383247 -0.6212406  0.94383621  0.07456498 -1.47075238
4  1.5952808  0.5757814 -2.2146999  0.82122120 -1.98935170 -0.47815006
5  0.3295078 -0.3053884  1.1249309  0.59390132  0.61982575  0.41794156
           X1         X2         X3         X4         X5
1  1.35867955 -0.4149946 -0.1645236 -0.7074952  0.3981059
2 -0.10278773 -0.3942900 -0.2533617  0.3645820 -0.6120264
3  0.38767161 -0.0593134  0.6969634  0.7685329  0.3411197
4 -0.05380504  1.1000254  0.5566632 -0.1123462 -1.1293631
5 -1.37705956  0.7631757 -0.6887557  0.8811077  1.4330237

使用增长的
seq
uences来子集数据,以及
行和

setNames(as.data.frame(sapply(Map(seq, 1:ncol(d))[-1], function(x) rowSums(d[x]))),
         paste("CAR-5", -4:5))
#   CAR-5 -4 CAR-5 -3 CAR-5 -2 CAR-5 -1  CAR-5 0  CAR-5 1  CAR-5 2
# 1     1.25 1.361111 1.423611 1.463611 1.491389 1.511797 1.527422
# 2     1.25 1.361111 1.423611 1.463611 1.491389 1.511797 1.527422
# 3     1.25 1.361111 1.423611 1.463611 1.491389 1.511797 1.527422
#    CAR-5 3  CAR-5 4  CAR-5 5
# 1 1.539768 1.549768 1.558032
# 2 1.539768 1.549768 1.558032
# 3 1.539768 1.549768 1.558032

数据:


d在最坏的情况下,您可以使用
apply

setNames(data.frame(t(apply(df, 1, cumsum))), paste("CAR-5", -5:5))

  CAR-5 -5 CAR-5 -4 CAR-5 -3 CAR-5 -2 CAR-5 -1  CAR-5 0  CAR-5 1  CAR-5 2  CAR-5 3  CAR-5 4  CAR-5 5
1        1     1.25 1.361111 1.423611 1.463611 1.491389 1.511797 1.527422 1.539768 1.549768 1.558032
2        1     1.25 1.361111 1.423611 1.463611 1.491389 1.511797 1.527422 1.539768 1.549768 1.558032
3        1     1.25 1.361111 1.423611 1.463611 1.491389 1.511797 1.527422 1.539768 1.549768 1.558032

谢谢,它确实起了作用:)谢谢,它确实起了作用:)谢谢,它确实起了作用:)谢谢,它确实起了作用:)谢谢,它确实起了作用:)
setNames(as.data.frame(sapply(Map(seq, 1:ncol(d))[-1], function(x) rowSums(d[x]))),
         paste("CAR-5", -4:5))
#   CAR-5 -4 CAR-5 -3 CAR-5 -2 CAR-5 -1  CAR-5 0  CAR-5 1  CAR-5 2
# 1     1.25 1.361111 1.423611 1.463611 1.491389 1.511797 1.527422
# 2     1.25 1.361111 1.423611 1.463611 1.491389 1.511797 1.527422
# 3     1.25 1.361111 1.423611 1.463611 1.491389 1.511797 1.527422
#    CAR-5 3  CAR-5 4  CAR-5 5
# 1 1.539768 1.549768 1.558032
# 2 1.539768 1.549768 1.558032
# 3 1.539768 1.549768 1.558032
d <- structure(list(`AR -5` = c(1, 1, 1), `AR -4` = c(0.25, 0.25, 
0.25), `AR -3` = c(0.111111111111111, 0.111111111111111, 0.111111111111111
), `AR -2` = c(0.0625, 0.0625, 0.0625), `AR -1` = c(0.04, 0.04, 
0.04), `AR 0` = c(0.0277777777777778, 0.0277777777777778, 0.0277777777777778
), `AR 1` = c(0.0204081632653061, 0.0204081632653061, 0.0204081632653061
), `AR 2` = c(0.015625, 0.015625, 0.015625), `AR 3` = c(0.0123456790123457, 
0.0123456790123457, 0.0123456790123457), `AR 4` = c(0.01, 0.01, 
0.01), `AR 5` = c(0.00826446280991736, 0.00826446280991736, 0.00826446280991736
)), row.names = c(NA, -3L), class = "data.frame")
setNames(data.frame(t(apply(df, 1, cumsum))), paste("CAR-5", -5:5))

  CAR-5 -5 CAR-5 -4 CAR-5 -3 CAR-5 -2 CAR-5 -1  CAR-5 0  CAR-5 1  CAR-5 2  CAR-5 3  CAR-5 4  CAR-5 5
1        1     1.25 1.361111 1.423611 1.463611 1.491389 1.511797 1.527422 1.539768 1.549768 1.558032
2        1     1.25 1.361111 1.423611 1.463611 1.491389 1.511797 1.527422 1.539768 1.549768 1.558032
3        1     1.25 1.361111 1.423611 1.463611 1.491389 1.511797 1.527422 1.539768 1.549768 1.558032