Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.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_List_Matrix_Sample - Fatal编程技术网

R 从向量列表中多次采样单个值

R 从向量列表中多次采样单个值,r,list,matrix,sample,R,List,Matrix,Sample,我有以下向量列表: list(c(663L, 705L, 680L, 769L, 775L, 327L, 665L, 805L, 808L, 689L, 774L, 831L, 832L, 217L, 739L, 918L, 354L, 373L, 764L, 691L, 839L, 372L, 146L, 840L, 727L, 728L, 617L, 647L, 159L, 161L, 581L, 142L, 618L, 332L, 585L, 134L, 809L, 154L, 15

我有以下向量列表:

list(c(663L, 705L, 680L, 769L, 775L, 327L, 665L, 805L, 808L, 
689L, 774L, 831L, 832L, 217L, 739L, 918L, 354L, 373L, 764L, 691L, 
839L, 372L, 146L, 840L, 727L, 728L, 617L, 647L, 159L, 161L, 581L, 
142L, 618L, 332L, 585L, 134L, 809L, 154L, 158L, 133L, 448L, 736L, 
737L, 815L, 876L, 151L, 750L, 701L, 778L, 861L, 584L, 692L, 427L, 
455L, 601L, 412L, 432L, 449L, 457L, 456L, 620L, 124L, 125L, 679L, 
329L, 667L, 697L, 806L, 807L, 312L, 315L, 733L, 821L, 222L, 583L, 
702L, 631L, 642L, 812L, 850L, 726L, 853L, 129L, 660L, 799L, 410L, 
188L, 798L, 130L, 703L, 341L, 826L, 137L, 253L, 123L, 827L, 844L, 
786L, 655L, 879L, 695L, 749L, 866L, 820L, 890L, 889L, 888L, 694L, 
744L, 746L, 813L, 818L, 868L, 873L, 872L, 869L, 870L, 414L, 738L, 
751L, 208L, 209L, 210L, 899L, 900L, 901L, 903L, 902L, 904L, 913L, 
911L, 912L, 767L, 917L, 777L, 521L, 396L, 397L, 915L, 277L, 529L, 
740L, 509L, 508L, 524L, 224L, 790L, 791L, 698L, 725L, 696L, 817L, 
802L, 897L, 898L, 787L, 788L, 789L, 462L, 356L, 395L, 693L, 745L, 
469L, 519L, 336L, 355L, 792L, 556L, 375L, 398L, 358L, 399L, 720L, 
539L, 558L, 331L, 166L, 167L, 128L, 131L, 214L, 239L, 269L, 276L, 
213L, 337L, 176L, 304L, 503L, 394L, 296L, 298L, 211L, 223L, 238L, 
338L, 487L, 490L, 488L, 489L, 273L, 274L, 892L, 300L, 301L, 816L, 
819L, 275L, 752L, 139L, 206L, 420L, 793L, 215L, 320L, 321L, 676L, 
226L, 699L, 325L, 252L, 319L, 672L, 236L, 306L, 743L, 237L, 439L, 
212L, 675L, 333L, 429L, 476L, 478L, 704L, 768L, 440L, 517L, 518L, 
776L, 810L, 413L, 554L, 555L, 765L, 622L, 626L, 624L, 625L, 231L, 
577L, 335L, 628L, 629L, 511L, 339L, 352L, 353L, 138L, 578L, 349L, 
496L, 611L, 606L, 614L, 612L, 613L, 607L, 609L, 608L, 610L, 328L, 
194L, 195L, 639L, 183L, 632L, 340L, 418L, 308L, 435L, 436L, 437L, 
543L, 905L, 914L, 428L, 374L, 444L, 502L, 825L, 510L, 732L, 557L, 
559L, 730L, 566L, 567L, 506L, 520L, 531L, 534L, 549L, 630L, 174L, 
175L, 140L, 677L, 426L, 377L, 392L, 196L, 186L, 197L, 144L, 141L, 
407L), c(887L, 886L, 884L, 885L), c(528L, 527L, 525L, 526L), 
    c(70L, 71L, 75L, 77L, 72L, 73L, 74L, 76L), c(111L, 109L, 
    110L, 98L, 120L, 112L, 116L, 103L, 106L, 93L, 95L, 94L, 119L, 
    117L, 99L, 118L), c(87L, 88L, 89L, 81L, 82L, 83L, 84L, 85L, 
    86L, 91L, 92L, 949L, 126L, 127L, 90L, 122L), c(530L, 185L, 
    202L, 363L, 729L, 880L, 368L, 401L, 391L, 405L, 906L, 513L, 
    652L, 708L, 552L, 766L, 505L, 382L, 383L, 803L, 565L, 571L, 
    572L, 688L, 460L, 480L, 661L, 153L, 859L, 256L, 268L, 685L, 
    763L, 147L, 865L, 874L, 741L, 754L, 858L, 878L, 220L, 225L, 
    307L, 317L, 313L, 758L, 314L, 848L, 163L, 165L, 387L, 452L, 
    378L, 270L, 271L, 464L, 302L, 280L, 283L, 504L, 712L, 281L, 
    801L), c(595L, 596L, 597L, 908L, 841L, 842L, 493L, 669L, 
    783L, 360L, 507L, 500L, 501L, 823L, 824L, 779L, 891L, 780L, 
    781L, 760L, 379L, 756L, 762L, 857L, 814L, 759L, 854L, 867L, 
    871L, 856L, 855L, 877L, 851L, 852L, 318L, 735L, 811L, 619L, 
    863L, 322L, 326L, 310L, 309L, 323L, 324L, 459L, 700L, 461L, 
    687L, 664L, 668L, 587L, 590L, 562L, 563L, 564L, 574L, 569L, 
    573L, 342L, 547L, 561L, 568L, 575L, 662L, 240L, 316L, 311L, 
    761L, 443L, 445L, 446L, 836L, 755L, 909L, 910L, 830L, 533L, 
    881L, 916L, 716L, 843L, 666L, 690L, 670L, 551L, 173L, 466L, 
    415L, 748L, 718L, 860L, 673L, 747L, 742L, 846L, 875L, 576L, 
    345L, 594L, 604L, 644L, 603L, 602L, 605L, 598L, 441L, 442L, 
    450L, 453L, 616L, 447L, 454L, 419L, 433L, 822L, 431L, 634L, 
    633L, 645L, 586L, 615L, 359L, 421L, 361L, 385L, 386L, 347L, 
    351L, 757L, 834L, 835L, 155L, 481L, 169L, 390L, 170L, 636L, 
    417L, 711L, 160L, 162L, 143L, 156L, 593L, 150L, 657L, 656L, 
    658L, 152L, 648L, 357L, 380L, 434L, 829L, 847L, 580L, 145L, 
    678L, 164L, 430L, 203L, 204L, 198L, 199L, 635L, 637L, 640L, 
    641L, 544L, 179L, 828L, 148L, 254L, 184L, 653L, 650L, 651L, 
    191L, 200L, 201L, 177L, 178L, 181L, 182L, 207L, 495L, 424L, 
    381L, 403L, 282L, 404L, 406L, 710L, 278L, 279L, 494L, 484L, 
    485L, 486L, 425L, 498L, 497L, 334L, 348L, 371L, 463L, 467L, 
    686L, 362L, 402L, 384L, 400L, 230L, 344L, 671L, 684L, 546L, 
    560L, 709L, 479L, 550L, 570L, 388L, 389L, 149L, 190L, 221L, 
    376L), c(1364L, 1373L, 1371L, 1372L, 1148L, 1211L, 1369L, 
    1370L, 1165L, 1377L, 1378L, 1112L, 1140L, 1139L, 1143L, 1019L, 
    1006L, 1247L, 1263L, 1191L, 1208L, 1059L, 1062L, 1115L, 1451L, 
    1448L, 1449L, 1113L, 1144L, 1458L, 1498L, 1499L, 955L, 968L, 
    1093L, 1365L, 1141L, 1265L, 1248L, 1249L, 1040L, 985L, 1119L, 
    1107L, 986L, 1197L, 1317L, 975L, 1155L, 1267L, 1215L, 1266L, 
    1106L, 1111L, 1058L, 1060L, 1457L, 1250L, 1314L, 1234L, 1146L, 
    1315L, 1101L, 1116L, 1310L, 1335L, 1041L, 1114L, 1124L, 954L, 
    1351L, 1358L, 1011L, 1409L, 1049L, 1167L, 1341L, 1278L, 1316L, 
    1392L, 1418L, 1307L, 1342L, 1086L, 1356L, 1432L, 1434L, 1466L, 
    1467L, 1479L, 1501L, 1487L, 1496L, 1495L, 1497L, 1476L, 1505L, 
    1506L, 1508L, 1507L, 1510L, 944L, 950L), c(1069L, 1094L, 
    1200L, 1306L, 981L, 1110L, 1206L, 1308L, 1047L, 1207L, 1312L, 
    1313L, 1109L, 1334L, 1309L, 1332L), c(1237L, 1242L, 1240L, 
    1243L, 1239L, 1238L, 1241L, 1343L, 1181L, 1301L, 1298L, 1300L, 
    1117L, 1133L, 1061L, 1419L, 1416L, 1417L, 1453L, 1311L, 1339L, 
    1333L, 1336L, 1028L, 1079L, 1459L, 1486L, 1192L, 1010L, 1012L, 
    1125L, 1199L, 1142L, 1205L, 1196L, 1198L, 951L, 1137L, 1128L, 
    1435L), c(930L, 942L, 922L, 940L, 941L, 943L, 920L, 921L, 
    923L, 925L, 927L, 928L, 924L, 926L, 931L, 932L, 937L, 938L, 
    939L, 935L, 936L, 929L, 933L, 934L), c(956L, 1051L, 1433L, 
    1468L, 1077L, 973L, 1438L, 1009L, 1158L, 1082L, 1170L, 1195L, 
    1177L, 1212L, 1213L, 1088L, 1153L, 1152L, 1354L, 959L, 1052L, 
    1176L, 1178L, 957L, 1376L, 1374L, 1375L, 1159L, 1223L, 1227L, 
    1268L, 1302L, 1275L, 1285L, 1016L, 1014L, 1126L, 1055L, 1102L, 
    1171L, 1327L, 1183L, 1274L, 1288L, 1296L, 1186L, 1297L, 1426L, 
    1454L, 1515L, 1078L, 989L, 990L, 980L, 1098L, 1150L, 1151L
    ), 78:79, c(1455L, 1475L, 1509L, 1477L, 1478L, 1494L, 1490L, 
    1491L, 1492L, 1427L, 1425L, 1473L, 1471L, 1472L, 1474L, 977L, 
    1179L, 1299L, 1290L, 1292L, 1480L, 1187L, 1295L, 1233L, 1188L, 
    1185L, 1293L, 1184L, 1294L, 1291L, 1175L, 1286L, 1424L, 1469L, 
    1502L, 1503L, 1421L, 1103L, 1488L, 1489L, 1092L, 1452L, 1350L, 
    1046L, 1166L, 1100L, 1305L, 1180L, 1182L, 1190L, 1289L, 979L, 
    961L, 1406L, 1273L, 1303L, 1456L, 1105L, 1331L, 1304L, 1407L, 
    994L, 1022L, 1021L, 1020L, 1025L, 1024L, 1023L, 1026L, 1216L, 
    1163L, 1161L, 1262L, 1156L, 1164L, 1230L, 1228L, 1224L, 80L, 
    953L, 962L, 974L, 992L, 1004L, 1005L, 1017L, 1031L, 1032L, 
    1029L, 1030L, 1057L, 982L, 1003L, 1007L, 1008L, 1042L, 1097L, 
    1089L, 1160L, 963L, 972L, 1070L, 1044L, 1431L, 1194L, 1204L, 
    993L, 1000L, 1001L, 1209L, 1210L, 1470L, 1287L, 1493L, 1075L, 
    1073L, 1074L, 1355L, 1090L, 1154L, 1357L, 1085L, 1087L, 1218L, 
    1504L, 1217L, 1174L, 1269L, 1270L, 1120L, 1272L, 1015L, 1018L, 
    946L, 1145L, 1397L, 971L, 1083L, 1284L, 1045L, 1048L, 1360L, 
    1361L, 1149L, 1282L, 1235L, 1236L, 1172L, 1367L, 1368L, 1345L, 
    964L, 976L, 1189L, 1281L, 1280L, 1279L, 1330L, 1328L, 1329L, 
    1157L, 1271L, 1324L, 1325L, 1081L, 1398L, 1391L, 1393L, 1405L, 
    1420L, 1104L, 1168L, 1201L, 1202L, 1338L, 1340L, 1277L, 1283L, 
    945L, 978L, 1422L, 1054L, 1076L, 960L, 1096L, 1091L, 1080L, 
    1169L, 1276L, 1050L, 1084L, 1035L, 1053L, 1095L, 1173L, 1056L, 
    1099L, 1138L, 997L, 1162L, 958L, 947L, 1344L), c(1222L, 1221L, 
    1219L, 1220L), c(1444L, 1446L, 1447L, 1445L, 1450L, 1132L, 
    1131L, 1130L, 1253L, 1462L, 1129L, 1254L, 965L, 966L, 967L, 
    1463L, 1134L, 1485L, 1483L, 1481L, 1482L, 1513L, 1465L, 1464L, 
    1512L, 1255L, 1258L, 1381L, 1318L, 1257L, 1323L, 1027L, 1251L, 
    1252L, 1214L, 1229L, 1256L, 1225L, 1226L, 1349L, 1352L, 1347L, 
    1348L, 1430L, 1428L, 1429L, 1436L, 1439L, 1440L, 952L, 1399L, 
    1389L, 1410L, 1385L, 1380L, 1401L, 1382L, 1366L, 1404L, 1403L, 
    1402L, 1400L, 1259L, 1415L, 1414L, 1413L, 1411L, 1412L, 1036L, 
    1039L, 1387L, 1386L, 1383L, 1379L, 1396L, 1394L, 1395L), 
    c(1322L, 1321L, 1319L, 1320L), c(998L, 1193L, 1072L, 991L, 
    999L, 1261L, 1326L, 1043L, 1037L, 1038L, 1353L, 1260L, 1390L, 
    1437L, 1346L, 1384L, 1408L, 1127L, 1423L, 1147L, 1135L, 1514L
    ), c(579L, 643L, 189L, 192L, 599L, 600L, 591L, 423L, 458L, 
    422L, 654L, 365L, 772L, 833L, 771L, 770L, 837L, 838L, 227L, 
    416L, 706L, 773L, 849L, 542L, 621L, 364L, 845L, 919L, 346L, 
    707L, 659L, 135L, 721L), c(305L, 255L, 795L, 800L, 719L, 
    734L, 794L, 1108L, 1136L, 1118L, 1071L, 1264L, 1203L, 1337L, 
    108L, 1232L, 1362L), c(674L, 796L, 864L, 235L, 724L, 408L, 
    731L, 723L, 722L, 548L, 168L, 797L, 132L, 205L, 649L, 180L, 
    582L, 330L, 157L, 465L, 499L, 536L, 516L, 883L), c(491L, 
    411L, 171L, 172L, 216L, 681L, 682L, 343L, 862L, 896L, 538L, 
    882L, 907L, 468L, 474L, 473L, 472L, 471L, 470L, 475L, 244L, 
    243L, 242L, 257L, 260L, 263L, 262L, 261L, 259L, 258L, 266L, 
    265L, 264L, 267L, 229L, 483L, 893L, 245L, 241L, 299L, 409L, 
    136L, 638L, 588L, 589L, 234L, 232L, 293L, 294L, 251L, 250L, 
    247L, 246L, 286L, 287L, 292L, 291L, 290L, 272L, 233L, 248L, 
    249L, 297L, 303L, 785L, 717L, 894L, 895L, 366L, 367L, 477L, 
    532L, 350L, 370L), c(289L, 288L, 284L, 285L), c(96L, 101L, 
    104L, 107L, 105L, 114L, 121L, 102L, 113L, 115L, 97L, 100L
    ), c(948L, 970L, 1033L, 969L, 996L, 987L, 988L, 995L, 1002L, 
    1034L, 1067L, 1068L, 1013L, 983L, 984L, 1460L, 1442L, 1500L, 
    1484L, 1246L, 1511L, 1461L, 1123L, 1443L, 1388L, 1063L, 1363L, 
    1064L, 1122L, 1359L, 1121L, 1231L, 1244L, 1245L, 1066L, 1065L, 
    1441L), c(295L, 438L, 753L, 782L, 219L, 228L, 714L, 369L, 
    553L, 393L, 713L, 683L, 784L, 492L, 715L, 482L, 541L, 592L, 
    451L, 627L, 187L, 193L, 804L, 623L, 646L, 514L, 515L, 522L, 
    512L, 523L, 545L, 218L, 535L, 537L, 540L), 16L, c(15L, 18L
    ), 1L, c(7L, 9L), 6L, 14L, 4L, 5L, 3L, 11L, 17L, 8L, 10L)
为了创建一个大的样本矩阵,我想从每个迭代的列表条目中抽取一个值,这意味着我将有40列(组的数量)和5000行(采样的次数)

我尝试了以下方法:

# groups - is the list
# repetition - is 5000
as.matrix(sapply(groups, sample, repetition, TRUE))
这似乎适用于小列表,但当我尝试使用大列表时,我会从其他组中获得不应该出现的元素:

使用上述代码的示例:


当向量长度为1时,采样从1:x开始。来自?样本:

如果x的长度为1,在is.numeric和x>=1的意义上为数字,则通过采样从1:x进行采样

所以当你这么做的时候

set.seed(123)
sample(10, 1)
#[1] 3
它从1到10中选择1个数字。为了避免发生这种情况,您可以在sapply中检查向量的长度:

因此,当向量的长度为1时,这将返回相同的重复次数。

我们可以将单个值列在子列表中,以避免1:x的便利性。例如:

请注意,长度为1的子列表作为列表进行采样,并在内部使用simplify2array将其简单化为整数,即取消列表。

采样手册给出了一种解决方案,如果“x”的长度为1,则示例中的数值为:


其中,sample.int表示要从中选择的项目数和要从中选择的样本元素数或正整数。

从样本帮助样本的描述中,如果x的长度为1,则在is.numeric和x>=1的意义上为数字,则通过样本进行的采样从1:x开始。请注意,当x在诸如samplex之类的调用中具有不同的长度时,此方便功能可能会导致不期望的行为。参见示例。在您的组列表中,有长度为1的数字向量,因此它不是从该向量采样,而是从1到值的范围采样。@Bas是的,我太不小心错过了它。哇,太愚蠢了,我在文档中错过了它,我肯定我做错了什么。谢谢你指出这一点。你不是唯一一个@David S!我的一些同事也咳嗽了出来。事实证明,“便利功能”非常不方便。。。XD当转换为子列表时,为什么它的行为符合要求?我真的不明白it@DavidS我补充了解释。
sapply(groups, function(x) if(length(x) == 1) rep(x, repetition) 
                           else sample(x, repetition, replace = TRUE))
groups <- list(2, 9, 2:9, 22:99)

groups[lengths(groups) == 1] <- lapply(groups[lengths(groups) == 1], list)
str(groups)
# List of 4
# $ :List of 1
#  ..$ : num 2
# $ :List of 1
#  ..$ : num 9
# $ : int [1:8] 2 3 4 5 6 7 8 9
# $ : int [1:78] 22 23 24 25 26 27 28 29 30 31 ...

repetition <- 10
set.seed(42)
r <- t(replicate(repetition, sapply(groups, sample, 1, replace=TRUE)))
r
#     [,1] [,2] [,3] [,4]
#  [1,] 2    9    2    46  
#  [2,] 2    9    3    70  
#  [3,] 2    9    9    92  
#  [4,] 2    9    6    41  
#  [5,] 2    9    8    24  
#  [6,] 2    9    4    57  
#  [7,] 2    9    6    26  
#  [8,] 2    9    5    24  
#  [9,] 2    9    3    45  
# [10,] 2    9    8    43  
resample <- function(x, ...) x[sample.int(length(x), ...)]

set.seed(42)
repetition <- 5
as.matrix(sapply(groups, resample, repetition, TRUE))
#     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24] [,25] [,26] [,27] [,28] [,29] [,30] [,31] [,32] [,33] [,34] [,35] [,36] [,37] [,38] [,39] [,40]
#[1,]  778  886  525   77  106   90  153  310 1059  1110  1243   937  1051    79  1489  1220  1394  1320  1408   706  1232   180   907   288    96  1231   482    16    18     1     9     6    14     4     5     3    11    17     8    10
#[2,]  802  887  526   71  106  126  878  857 1250  1094  1205   936   989    78  1478  1222  1253  1321  1127   838  1362   723   216   284    97  1442   545    16    18     1     7     6    14     4     5     3    11    17     8    10
#[3,]  222  885  528   71   95   82  202  145 1370  1109  1196   938  1433    79  1424  1221  1214  1321   999   845  1264   516   350   288   113   983   537    16    15     1     7     6    14     4     5     3    11    17     8    10
#[4,]  237  884  528   74   98   81  280  309 1365  1313  1028   943   980    79  1277  1222  1463  1321  1437   772  1136   408   287   288   113   987   523    16    18     1     9     6    14     4     5     3    11    17     8    10
#[5,]  224  885  527   75  120   88  763  143 1114   981  1336   943  1052    79  1044  1222  1036  1320  1043   227  1071   674   473   285   104  1441   218    16    18     1     9     6    14     4     5     3    11    17     8    10