带赋值名称向量和函数的循环的R

带赋值名称向量和函数的循环的R,r,variables,for-loop,R,Variables,For Loop,给定一个字符向量,我想循环一个具有名称赋值的函数 uprop是一个“data.frame”(1000个观察值和20列),如下所示: > class(uprop) [1] "data.frame" 和部门,来源,目标,以及权重计数都是upup 假设我们需要简化这项重复性任务: CAST_uprop_data <- subset(uprop, Department == "CAST", select = c(Source, Target, WeightCount)) CHEG_upr

给定一个字符向量,我想循环一个具有名称赋值的函数

uprop
是一个“data.frame”(1000个观察值和20列),如下所示:

> class(uprop)

[1] "data.frame"
部门来源目标,以及权重计数都是
upup

假设我们需要简化这项重复性任务:

CAST_uprop_data <- subset(uprop, Department == "CAST", select = c(Source, Target, WeightCount))
CHEG_uprop_data <- subset(uprop, Department == "CHEG", select = c(Source, Target, WeightCount))
PHYS_uprop_data <- subset(uprop, Department == "PHYS", select = c(Source, Target, WeightCount))
但是,我不知道如何循环遍历这些名称,并让它运行和分配每个名称

以下是我的尝试:

for (i in c(cust_dept_list)){
  print(paste0(i,"_uprop_data")) <- subset(uprop, Department == i, select = c(Source, Target, WeightCount)), i
}
for(i in c(客户部门列表)){

打印(粘贴0(i,“\u upup\u data”)不要创建一堆不同的变量;创建一个值列表,而使用

cust_dept_list <- c('CAST', 'CHEG', 'PHYS')
uprop_data <- lapply(cust_dept_list, function(x) 
    subset(uprop, Department == x, select = c(Source, Target, WeightCount))
)

在列表中循环这些数据集的函数以供将来分析会更容易。请参阅相关回复,网址为

不要创建一组不同的变量,而是使用

cust_dept_list <- c('CAST', 'CHEG', 'PHYS')
uprop_data <- lapply(cust_dept_list, function(x) 
    subset(uprop, Department == x, select = c(Source, Target, WeightCount))
)

在列表中循环这些数据集的函数以供将来分析将更容易。请参阅相关回复,网址为

。只有极少数情况下,您应该通过循环子集来分配全局变量。我建议您学习tidyverse

如果您不了解下面的内容,请查找它,因为%>%运算符将为您节省大量时间和精力(同时使代码对其他人可读)

您将使用非常类似于数据帧的“tibble”。在这个框架中,您只需按部门分组,并创建一个包含所有数据的单独行

library(tidyverse)

unprop_data = data.frame(Department = c(rep("CAST",1000),rep("CHEG",1000),rep("PHYS",1000)),
                     Source = rnorm(3000),
                     Target = rnorm(3000),
                     WeightCount = rnorm(3000))

grouped_data = unprop_data %>%
  group_by(Department) %>%
  select(Source, Target, WeightCount) %>%
  nest()
结果如下:

> grouped_data
# A tibble: 3 x 2
  Department                 data
      <fctr>               <list>
1       CAST <tibble [1,000 x 3]>
2       CHEG <tibble [1,000 x 3]>
3       PHYS <tibble [1,000 x 3]>
返回:

[1] "CAST"
[1] "###########################"
# A tibble: 1,000 x 4
   Department     Source      Target WeightCount
       <fctr>      <dbl>       <dbl>       <dbl>
 1       CAST -0.3781853 -0.59457662   0.2796963
 2       CAST  0.7261541 -1.06344758   1.1874874
 3       CAST -0.1207312  0.56961950   0.2082236
 4       CAST -1.5467661  1.23693964  -0.9732976
 5       CAST -1.6626831  0.09252543  -0.3003913
 6       CAST -0.2783635 -0.84363946   2.0588511
 7       CAST  1.6981061  0.13755764  -0.3935691
 8       CAST  0.4900337 -0.73662209   0.8861508
 9       CAST  0.3971949 -0.23047428   1.6226582
10       CAST  0.7721574 -0.69117961  -0.4547899
# ... with 990 more rows
[1] "CHEG"
[1] "###########################"
# A tibble: 1,000 x 4
   Department     Source     Target WeightCount
       <fctr>      <dbl>      <dbl>       <dbl>
 1       CHEG -0.7843984 -0.8788216  0.60030359
 2       CHEG -0.5636669 -2.2283878 -0.16178492
 3       CHEG  0.9024084 -1.5052453 -1.58803972
 4       CHEG  1.7662237  1.2125255 -0.91229428
 5       CHEG  0.3950654 -0.8283651  0.07402481
 6       CHEG  0.3928973 -1.3650744 -0.75262682
 7       CHEG  1.1298127  1.4765888 -0.76059162
 8       CHEG  0.4787867  0.6041770 -1.23313321
 9       CHEG -1.4474401 -0.6747809  0.78431441
10       CHEG  0.6463868  0.2558378 -1.34131546
# ... with 990 more rows
[1] "PHYS"
[1] "###########################"
# A tibble: 1,000 x 4
   Department     Source      Target WeightCount
       <fctr>      <dbl>       <dbl>       <dbl>
 1       PHYS  0.1425978 -1.01397581 -0.16573546
 2       PHYS -1.2572684 -1.13069956 -0.61870063
 3       PHYS  1.2089882  1.51020970 -1.43474343
 4       PHYS -0.6357010 -0.07362852  0.06683348
 5       PHYS -1.6402587 -1.35273300  0.14436313
 6       PHYS -0.9408105 -1.52515527 -0.06860152
 7       PHYS  0.3143868  0.11814597 -0.37823801
 8       PHYS -0.3232879  0.15408677 -0.62820531
 9       PHYS  0.3152122 -0.72634466 -1.71955337
10       PHYS  0.7268282 -0.20872075  0.30780981
# ... with 990 more rows
[1]“强制转换”
[1] "###########################"
#一个tibble:1000x4
部门源目标权重计数
1铸件-0.3781853-0.59457662 0.2796963
2铸件0.7261541-1.06344758 1.1874874
3铸件-0.1207312 0.56961950 0.2082236
4铸件-1.5467661 1.23693964-0.9732976
5铸件-1.6626831 0.09252543-0.3003913
6铸件-0.2783635-0.84363946 2.0588511
7铸件1.6981061 0.13755764-0.3935691
8铸件0.4900337-0.73662209 0.8861508
9铸造0.3971949-0.23047428 1.6226582
10铸造0.7721574-0.69117961-0.4547899
#…还有990行
[1] “CHEG”
[1] "###########################"
#一个tibble:1000x4
部门源目标权重计数
1支票-0.7843984-0.8788216 0.60030359
2支票-0.5636669-2.2283878-0.16178492
3支票0.9024084-1.5052453-1.58803972
4支票1.7662237 1.2125255-0.91229428
5支票0.3950654-0.8283651 0.07402481
6支票0.3928973-1.3650744-0.75262682
7支票1.1298127 1.4765888-0.76059162
8支票0.4787867 0.6041770-1.23313321
9支票-1.4474401-0.6747809 0.78431441
10支票0.6463868 0.2558378-1.34131546
#…还有990行
[1] “物理”
[1] "###########################"
#一个tibble:1000x4
部门源目标权重计数
1物理量0.1425978-1.01397581-0.16573546
2物理量-1.2572684-1.13069956-0.61870063
3物理1.2089882 1.51020970-1.43474343
4物理量-0.6357010-0.07362852 0.06683348
5物理量-1.6402587-1.35273300.14436313
6物理量-0.9408105-1.52515527-0.06860152
7物理学0.3143868 0.11814597-0.37823801
8物理量-0.3232879 0.15408677-0.62820531
9物理学0.3152122-0.72634466-1.71955337
10物理0.7268282-0.20872075 0.30780981
#…还有990行

只有极少数情况下,您应该通过循环子集来分配全局变量。我建议您学习tidyverse

如果您不了解下面的内容,请查找它,因为%>%运算符将为您节省大量时间和精力(同时使代码对其他人可读)

您将使用非常类似于数据帧的“tibble”。在这个框架中,您只需按部门分组,并创建一个包含所有数据的单独行

library(tidyverse)

unprop_data = data.frame(Department = c(rep("CAST",1000),rep("CHEG",1000),rep("PHYS",1000)),
                     Source = rnorm(3000),
                     Target = rnorm(3000),
                     WeightCount = rnorm(3000))

grouped_data = unprop_data %>%
  group_by(Department) %>%
  select(Source, Target, WeightCount) %>%
  nest()
结果如下:

> grouped_data
# A tibble: 3 x 2
  Department                 data
      <fctr>               <list>
1       CAST <tibble [1,000 x 3]>
2       CHEG <tibble [1,000 x 3]>
3       PHYS <tibble [1,000 x 3]>
返回:

[1] "CAST"
[1] "###########################"
# A tibble: 1,000 x 4
   Department     Source      Target WeightCount
       <fctr>      <dbl>       <dbl>       <dbl>
 1       CAST -0.3781853 -0.59457662   0.2796963
 2       CAST  0.7261541 -1.06344758   1.1874874
 3       CAST -0.1207312  0.56961950   0.2082236
 4       CAST -1.5467661  1.23693964  -0.9732976
 5       CAST -1.6626831  0.09252543  -0.3003913
 6       CAST -0.2783635 -0.84363946   2.0588511
 7       CAST  1.6981061  0.13755764  -0.3935691
 8       CAST  0.4900337 -0.73662209   0.8861508
 9       CAST  0.3971949 -0.23047428   1.6226582
10       CAST  0.7721574 -0.69117961  -0.4547899
# ... with 990 more rows
[1] "CHEG"
[1] "###########################"
# A tibble: 1,000 x 4
   Department     Source     Target WeightCount
       <fctr>      <dbl>      <dbl>       <dbl>
 1       CHEG -0.7843984 -0.8788216  0.60030359
 2       CHEG -0.5636669 -2.2283878 -0.16178492
 3       CHEG  0.9024084 -1.5052453 -1.58803972
 4       CHEG  1.7662237  1.2125255 -0.91229428
 5       CHEG  0.3950654 -0.8283651  0.07402481
 6       CHEG  0.3928973 -1.3650744 -0.75262682
 7       CHEG  1.1298127  1.4765888 -0.76059162
 8       CHEG  0.4787867  0.6041770 -1.23313321
 9       CHEG -1.4474401 -0.6747809  0.78431441
10       CHEG  0.6463868  0.2558378 -1.34131546
# ... with 990 more rows
[1] "PHYS"
[1] "###########################"
# A tibble: 1,000 x 4
   Department     Source      Target WeightCount
       <fctr>      <dbl>       <dbl>       <dbl>
 1       PHYS  0.1425978 -1.01397581 -0.16573546
 2       PHYS -1.2572684 -1.13069956 -0.61870063
 3       PHYS  1.2089882  1.51020970 -1.43474343
 4       PHYS -0.6357010 -0.07362852  0.06683348
 5       PHYS -1.6402587 -1.35273300  0.14436313
 6       PHYS -0.9408105 -1.52515527 -0.06860152
 7       PHYS  0.3143868  0.11814597 -0.37823801
 8       PHYS -0.3232879  0.15408677 -0.62820531
 9       PHYS  0.3152122 -0.72634466 -1.71955337
10       PHYS  0.7268282 -0.20872075  0.30780981
# ... with 990 more rows
[1]“强制转换”
[1] "###########################"
#一个tibble:1000x4
部门源目标权重计数
1铸件-0.3781853-0.59457662 0.2796963
2铸件0.7261541-1.06344758 1.1874874
3铸件-0.1207312 0.56961950 0.2082236
4铸件-1.5467661 1.23693964-0.9732976
5铸件-1.6626831 0.09252543-0.3003913
6铸件-0.2783635-0.84363946 2.0588511
7铸件1.6981061 0.13755764-0.3935691
8铸件0.4900337-0.73662209 0.8861508
9铸造0.3971949-0.23047428 1.6226582
10铸造0.7721574-0.69117961-0.4547899
#…还有990行
[1] “CHEG”
[1] "###########################"
#一个tibble:1000x4
部门源目标权重计数
1支票-0.7843984-0.8788216 0.60030359
2支票-0.5636669-2.2283878-0.16178492
3支票0.9024084-1.5052453-1.58803972
4支票1.7662237 1.2125255-0.91229428
5支票0.3950654-0.8283651 0.07402481
6支票0.3928973-1.3650744-0.75262682
7支票1.1298127 1.4765888-0.76059162
8支票0.4787867 0.6041770-1.23313321
9支票-1.4474401-0.6747809 0.78431441
10支票0.6463868 0.2558378-1.34131546
#…还有990行
[1] “物理”
[1] "###########################"
#一个tibble:1000x4
部门源目标权重计数
1物理量0.1425978-1.01397581-0.16573546
2物理量-1.2572684-1.13069956-0.61870063
3物理1.2089882 1.51020970-1.43474343
4物理量-0.6357010-0.07362852 0.06683348
5物理量-1.6402587-1.35273300.14436313
6物理量-0.9408105-1.52515527-0.06860152
7物理学0.3143868 0.11814597-0.37823801