【问题标题】:Delete rows of Data Frames inside a List by condition in R根据R中的条件删除列表中的数据帧行
【发布时间】:2023-02-23 02:53:16
【问题描述】:

我有一个这样的数据框列表:

$data_type1
   Species_Name X.micron. Y.micron. Type
1     Cerulean+    903.59    715.00    1
2     Cerulean+   1136.70    795.88    1
3     Cerulean+    559.53    759.29    1
4     Cerulean+    921.69     35.87    1

$data_type2
   Species_Name X.micron. Y.micron. Type
1       Cherry+   490.070    360.15    2
2       Cherry+   766.810    696.30    2
3       Cherry+   797.730    787.09    2
4       Cherry+   842.870   1096.40    2

$data_type3
    Species_Name X.micron. Y.micron. Type
1           GFP+     60.85    45.170    3
2           GFP+    187.03   699.990    3
3           GFP+    405.63   864.510    3
4           GFP+    995.68  1153.000    3

$data_type5
      Species_Name X.micron. Y.micron. Type
1 Cerulean+Cherry+    270.37    944.59    5
2 Cerulean+Cherry+    377.66    845.79    5

$data_type6
    Species_Name X.micron. Y.micron. Type
1  Cerulean+GFP+   1013.80    716.84    6
2  Cerulean+GFP+   1035.10    140.22    6
3  Cerulean+GFP+   1038.50    133.05    6
4  Cerulean+GFP+   1066.30   1001.60    6

$data_type8
          Species_Name X.micron. Y.micron. Type
1 Cerulean+Cherry+GFP+    270.37    944.59    8
2 Cerulean+Cherry+GFP+    377.66    845.79    8

我想删除基于 X.micron. Y.micron.Species_Name 列的重复行,但有一个特殊条件:

只需删除名称已包含在另一个数据框中的数据框的行,并将名称从多到少,即X.micron.Y.micron.匹配$data_type8Species_Name = Cerulean+Cherry+GFP+$data_type5Species_Name = Cerulean+Cherry+之间的匹配值即可只在$data_type8,因为它包括$data_type5Species_Name

与“以下”数据框相同,即$data_type1Species_Name = Cerulean+$data_type2Species_Name = Cherry+不能具有$data_type5,与Species_Name = Cerulean+Cherry+X.micron.Y.micron.匹配值。

或者规则可能是我想保留 Species_Name 具有更多“+”的那个,即我想保留 Cerulean+Cherry+GFP+ 而不是 Cerulean+Cherry+,因为前者有更多的“+”。

数据帧不是从最长名称长度到最短名称长度排序的。

如果需要,这里是数据:

list(data_type1 = structure(list(Species_Name = c("Cerulean+", 
"Cerulean+", "Cerulean+", "Cerulean+", "Cerulean+", "Cerulean+", 
"Cerulean+", "Cerulean+", "Cerulean+", "Cerulean+", "Cerulean+", 
"Cerulean+", "Cerulean+", "Cerulean+", "Cerulean+", "Cerulean+", 
"Cerulean+", "Cerulean+", "Cerulean+", "Cerulean+", "Cerulean+", 
"Cerulean+", "Cerulean+", "Cerulean+", "Cerulean+", "Cerulean+", 
"Cerulean+", "Cerulean+", "Cerulean+", "Cerulean+", "Cerulean+", 
"Cerulean+", "Cerulean+", "Cerulean+", "Cerulean+", "Cerulean+", 
"Cerulean+", "Cerulean+"), X.micron. = c(903.59, 1136.7, 559.53, 
921.69, 1098.8, 435.11, 296.62, 89.74, 1013.8, 865.01, 879.5, 
835.4, 1035.1, 896.13, 377.66, 929.17, 1119.9, 608.22, 1133.6, 
1092.1, 1038.5, 193.61, 400.89, 1066.3, 861.57, 794.03, 680.6, 
270.37, 113.76, 875.61, 791.82, 111.57, 1146.1, 672.51, 267.26, 
814.24, 1013.3, 722.9), Y.micron. = c(715, 795.88, 759.29, 35.87, 
530.01, 905.22, 363.17, 773.4, 716.84, 746.88, 768.9, 540.12, 
140.22, 839.33, 845.79, 758.91, 1025.8, 604.25, 806.34, 1154.4, 
133.05, 1018.3, 1137.2, 1001.6, 693.72, 779.68, 756.84, 944.59, 
588.05, 792.84, 720.28, 580.06, 1038.8, 763.88, 195.9, 663.11, 
1086.7, 786.59), Type = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L)), class = "data.frame", row.names = c(NA, 
-38L)), data_type2 = structure(list(Species_Name = c("Cherry+", 
"Cherry+", "Cherry+", "Cherry+", "Cherry+", "Cherry+", "Cherry+", 
"Cherry+", "Cherry+", "Cherry+", "Cherry+", "Cherry+", "Cherry+", 
"Cherry+", "Cherry+", "Cherry+", "Cherry+", "Cherry+", "Cherry+", 
"Cherry+", "Cherry+", "Cherry+", "Cherry+", "Cherry+", "Cherry+", 
"Cherry+", "Cherry+", "Cherry+", "Cherry+", "Cherry+", "Cherry+", 
"Cherry+", "Cherry+", "Cherry+", "Cherry+", "Cherry+", "Cherry+", 
"Cherry+", "Cherry+", "Cherry+", "Cherry+", "Cherry+", "Cherry+", 
"Cherry+", "Cherry+", "Cherry+", "Cherry+", "Cherry+", "Cherry+", 
"Cherry+", "Cherry+", "Cherry+", "Cherry+", "Cherry+", "Cherry+", 
"Cherry+", "Cherry+", "Cherry+", "Cherry+", "Cherry+", "Cherry+", 
"Cherry+", "Cherry+", "Cherry+", "Cherry+", "Cherry+", "Cherry+", 
"Cherry+", "Cherry+"), X.micron. = c(490.07, 766.81, 797.73, 
842.87, 58.05, 568.52, 846.38, 797.08, 768.6, 171.05, 844.6, 
827.65, 437.42, 346.92, 291.71, 1053, 351.06, 501.02, 142.71, 
754.16, 710.78, 663.39, 21.4, 847.78, 1014.6, 377.66, 503.92, 
263.6, 81.35, 967.7, 985.96, 875.03, 750.01, 707.24, 599.88, 
993.13, 321.22, 623.19, 1048.5, 843.97, 893, 270.37, 774.72, 
753.17, 288.03, 859.16, 295.73, 77.45, 654.81, 3.278, 91.48, 
1145.5, 726.58, 57.82, 912.42, 221.13, 600.84, 1021.4, 382.66, 
322.72, 150.84, 1046.1, 151.5, 98.83, 478.18, 617.61, 616.06, 
831.46, 626.67), Y.micron. = c(360.15, 696.3, 787.09, 1096.4, 
786.82, 802.73, 619.48, 1079.3, 561.24, 682.11, 1086.9, 466.11, 
13.01, 839.55, 600.19, 548.48, 809.79, 37.7, 697.62, 179.86, 
384.97, 750.37, 342.3, 557.81, 1125.4, 845.79, 45.17, 815.17, 
745.71, 1142.3, 1114, 625.81, 599.2, 1040.5, 628.34, 720.89, 
740.14, 44.63, 1136.6, 590.3, 1112.3, 944.59, 976.35, 173.17, 
647.45, 567.98, 640.85, 664.03, 703.04, 329.8, 621.6, 1080.7, 
638.07, 605.3, 1144.5, 997.47, 775.7, 1130.9, 852.37, 748.63, 
698.32, 1154.7, 656.57, 704.17, 949.61, 1016.2, 41.08, 761.83, 
1013.8), Type = c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L)), class = "data.frame", row.names = c(NA, 
-69L)), data_type3 = structure(list(Species_Name = c("GFP+", 
"GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", 
"GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", 
"GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", 
"GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", 
"GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", 
"GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", 
"GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", 
"GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", 
"GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", 
"GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", 
"GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", 
"GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", 
"GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", 
"GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", 
"GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", 
"GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", 
"GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", 
"GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", 
"GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", 
"GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", 
"GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", 
"GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", "GFP+", 
"GFP+", "GFP+"), X.micron. = c(60.85, 187.03, 405.63, 995.68, 
788.17, 403.23, 507.68, 559.53, 172.36, 921.69, 673.6, 861.81, 
256.96, 1098.8, 435.11, 568.52, 89.74, 43.48, 873.96, 797.08, 
1013.8, 879.5, 628.57, 624.58, 1035.1, 167.98, 519.78, 453.7, 
230.96, 181.64, 896.13, 236.27, 744.66, 74.49, 351.06, 491.68, 
142.71, 696.65, 1076.8, 497.16, 663.39, 862.54, 377.66, 675.65, 
496.54, 929.17, 1119.9, 430.33, 608.22, 499.72, 875.5, 723.47, 
243.17, 263.6, 1015.2, 429.89, 400.99, 152.42, 1038.5, 193.61, 
717.22, 551.1, 81.35, 985.96, 400.89, 820.52, 763.65, 967.91, 
87.53, 546.95, 1052.9, 505.81, 1066.3, 847.51, 1021, 861.57, 
915.99, 1113.4, 606.47, 877.1, 527.31, 647.58, 1048.5, 955.56, 
893, 537.71, 680.6, 862.57, 657.29, 430.07, 270.37, 113.76, 339.26, 
222.95, 891.63, 763.12, 621.69, 283.9, 89.75, 145.37, 752.16, 
874.04, 68.4, 284.71, 593.8, 323.06, 660.01, 871.7, 541.15, 278.56, 
517.04, 929.6, 880.31, 582.68, 192.82, 681.3, 618.3, 523.79, 
286.45, 61.58, 871.06, 223.01, 820.95, 524.11, 360.94, 242.29, 
587.52, 821.13, 881.42, 267.26, 896.3, 912.42, 409.57, 555.53, 
171.12, 914.89, 1025.9, 690.5, 990.02, 503.58, 190.39, 1139.8, 
382.66, 451.53, 574.32, 868.03, 378.36, 935.32, 94.81, 887.37, 
658.33, 1046.1, 787.93, 824.66, 908.15, 151.5, 316.87, 507.09, 
98.83, 282.62, 35.12, 722.9, 380.33, 483.43, 1002.8, 805.7, 367.65, 
707.84, 782.66, 743.08, 671.51, 600.27, 536.82, 312.41, 785.1, 
214.96, 759.26, 436.96, 329.87), Y.micron. = c(45.17, 699.99, 
864.51, 1153, 1085.9, 758.15, 909.63, 759.29, 517.66, 35.87, 
44.52, 527.6, 839.18, 530.01, 905.22, 802.73, 773.4, 588.78, 
1128.9, 1079.3, 716.84, 768.9, 779.9, 833.44, 140.22, 691.01, 
1035.9, 111.18, 663.99, 519.47, 839.33, 833.99, 982.81, 775.99, 
809.79, 1038.8, 697.62, 399.51, 732.28, 1046, 750.37, 1109.2, 
845.79, 262.32, 260.58, 758.91, 1025.8, 730.98, 604.25, 269.39, 
1151.9, 760.46, 651.32, 815.17, 646.41, 846.82, 857.22, 1035, 
133.05, 1018.3, 748.67, 849.22, 745.71, 1114, 1137.2, 1066.1, 
1079.6, 1112.6, 590.92, 84.27, 491.77, 788.93, 1001.6, 1024.6, 
720.32, 693.72, 671.41, 1041.2, 3.049, 1138.6, 241.3, 152.2, 
1136.6, 609.36, 1112.3, 1070.3, 756.84, 738.7, 774.74, 777.23, 
944.59, 588.05, 1012.2, 893.77, 644.27, 1067.7, 143.06, 1054.3, 
712.31, 1032.3, 1079.6, 662.26, 607.11, 1025.4, 123.8, 889.3, 
147.82, 530.42, 239.63, 1022.3, 788.9, 809.82, 717.54, 63.88, 
707.28, 41.92, 211.76, 1041, 1015.4, 572.29, 765.91, 711.32, 
1098, 787.61, 862.34, 958.59, 763.37, 721.18, 686.84, 195.9, 
808.81, 1144.5, 561.97, 856.44, 507.22, 732, 789.94, 403.6, 1159.1, 
707.02, 583, 688.03, 852.37, 30, 93.07, 686.16, 727.53, 558.68, 
659.24, 741.47, 1097.4, 1154.7, 1110, 716.84, 1141, 656.57, 894.29, 
932.13, 704.17, 714.7, 781.38, 786.59, 706.07, 796.56, 1050.3, 
1070.3, 106.65, 369.91, 726.79, 738.74, 253.97, 826.5, 1034.7, 
731.69, 1121.7, 495.06, 1071.6, 1067.9, 888.47), Type = c(3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L)), class = "data.frame", row.names = c(NA, -179L)), data_type4 = structure(list(
    Species_Name = c("TFP+", "TFP+", "TFP+", "TFP+", "TFP+", 
    "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", 
    "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", 
    "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", 
    "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", 
    "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", 
    "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", 
    "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", 
    "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", "TFP+", 
    "TFP+", "TFP+", "TFP+", "TFP+"), X.micron. = c(457.37, 797.73, 
    559.53, 921.69, 464.24, 256.96, 435.11, 568.52, 89.74, 457.94, 
    1035.1, 286.79, 511.92, 529.14, 298.42, 999.6, 896.13, 744.66, 
    351.06, 696.65, 514, 929.17, 1119.9, 608.22, 1080.6, 592.14, 
    1038.5, 193.61, 590.53, 400.89, 820.52, 861.57, 794.03, 1048.5, 
    955.56, 822.18, 680.6, 862.57, 270.37, 809.16, 447.29, 891.63, 
    89.75, 457.03, 681.3, 816.16, 672.51, 506.63, 961.07, 267.26, 
    613.44, 129.37, 278.87, 828.25, 382.66, 127.09, 391.42, 935.32, 
    620.63, 646.99, 787.93, 627.24, 109.97, 98.83, 525.19, 93.64, 
    1013.3, 652.08, 1018.1, 782.66, 785.1, 956.45, 634.32), Y.micron. = c(259.31, 
    787.09, 759.29, 35.87, 27.28, 839.18, 905.22, 802.73, 773.4, 
    250.48, 140.22, 670.66, 224.43, 697.39, 514.61, 1097.9, 839.33, 
    982.81, 809.79, 399.51, 214.91, 758.91, 1025.8, 604.25, 1013.9, 
    8.792, 133.05, 1018.3, 985.91, 1137.2, 1066.1, 693.72, 779.68, 
    1136.6, 609.36, 824.79, 756.84, 738.7, 944.59, 383.2, 248.24, 
    644.27, 712.31, 238.57, 41.92, 804.53, 763.88, 242.94, 465.35, 
    195.9, 821.53, 939.59, 674.39, 1060.9, 852.37, 578.39, 609.06, 
    558.68, 814.94, 116.11, 1110, 110.35, 964.4, 704.17, 705.82, 
    762.21, 1086.7, 104.16, 1092.1, 726.79, 1121.7, 470.81, 105.34
    ), Type = c(4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
    4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
    4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
    4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
    4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
    4L)), class = "data.frame", row.names = c(NA, -73L)), data_type5 = structure(list(
    Species_Name = c("Cerulean+Cherry+", "Cerulean+Cherry+"), 
    X.micron. = c(270.37, 377.66), Y.micron. = c(944.59, 845.79
    ), Type = c(5L, 5L)), class = "data.frame", row.names = c(NA, 
-2L)), data_type6 = structure(list(Species_Name = c("Cerulean+GFP+", 
"Cerulean+GFP+", "Cerulean+GFP+", "Cerulean+GFP+", "Cerulean+GFP+", 
"Cerulean+GFP+", "Cerulean+GFP+", "Cerulean+GFP+", "Cerulean+GFP+", 
"Cerulean+GFP+", "Cerulean+GFP+", "Cerulean+GFP+", "Cerulean+GFP+", 
"Cerulean+GFP+", "Cerulean+GFP+", "Cerulean+GFP+", "Cerulean+GFP+", 
"Cerulean+GFP+", "Cerulean+GFP+", "Cerulean+GFP+", "Cerulean+GFP+", 
"Cerulean+GFP+", "Cerulean+GFP+"), X.micron. = c(1013.8, 1035.1, 
1038.5, 1066.3, 1098.8, 1119.9, 113.76, 193.61, 267.26, 270.37, 
377.66, 400.89, 435.11, 559.53, 608.22, 680.6, 722.9, 861.57, 
879.5, 89.74, 896.13, 921.69, 929.17), Y.micron. = c(716.84, 
140.22, 133.05, 1001.6, 530.01, 1025.8, 588.05, 1018.3, 195.9, 
944.59, 845.79, 1137.2, 905.22, 759.29, 604.25, 756.84, 786.59, 
693.72, 768.9, 773.4, 839.33, 35.87, 758.91), Type = c(6L, 6L, 
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
6L, 6L, 6L, 6L, 6L)), class = "data.frame", row.names = c(NA, 
-23L)), data_type7 = structure(list(Species_Name = c("Cerulean+TFP+", 
"Cerulean+TFP+", "Cerulean+TFP+", "Cerulean+TFP+", "Cerulean+TFP+", 
"Cerulean+TFP+", "Cerulean+TFP+", "Cerulean+TFP+", "Cerulean+TFP+", 
"Cerulean+TFP+", "Cerulean+TFP+", "Cerulean+TFP+", "Cerulean+TFP+", 
"Cerulean+TFP+", "Cerulean+TFP+", "Cerulean+TFP+", "Cerulean+TFP+", 
"Cerulean+TFP+", "Cerulean+TFP+"), X.micron. = c(1013.3, 1035.1, 
1038.5, 1119.9, 193.61, 267.26, 270.37, 400.89, 435.11, 559.53, 
608.22, 672.51, 680.6, 794.03, 861.57, 89.74, 896.13, 921.69, 
929.17), Y.micron. = c(1086.7, 140.22, 133.05, 1025.8, 1018.3, 
195.9, 944.59, 1137.2, 905.22, 759.29, 604.25, 763.88, 756.84, 
779.68, 693.72, 773.4, 839.33, 35.87, 758.91), Type = c(7L, 7L, 
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 
7L)), class = "data.frame", row.names = c(NA, -19L)), data_type8 = structure(list(
    Species_Name = c("Cerulean+Cherry+GFP+", "Cerulean+Cherry+GFP+"
    ), X.micron. = c(270.37, 377.66), Y.micron. = c(944.59, 845.79
    ), Type = c(8L, 8L)), class = "data.frame", row.names = c(NA, 
-2L)), data_type9 = structure(list(Species_Name = "Cerulean+Cherry+TFP+", 
    X.micron. = 270.37, Y.micron. = 944.59, Type = 9L), class = "data.frame", row.names = c(NA, 
-1L)), data_type10 = structure(list(Species_Name = "Cerulean+Cherry+GFP+TFP+", 
    X.micron. = 270.37, Y.micron. = 944.59, Type = 10L), class = "data.frame", row.names = c(NA, 
-1L)), data_type11 = structure(list(Species_Name = c("Cerulean+GFP+TFP+", 
"Cerulean+GFP+TFP+", "Cerulean+GFP+TFP+", "Cerulean+GFP+TFP+", 
"Cerulean+GFP+TFP+", "Cerulean+GFP+TFP+", "Cerulean+GFP+TFP+", 
"Cerulean+GFP+TFP+", "Cerulean+GFP+TFP+", "Cerulean+GFP+TFP+", 
"Cerulean+GFP+TFP+", "Cerulean+GFP+TFP+", "Cerulean+GFP+TFP+", 
"Cerulean+GFP+TFP+", "Cerulean+GFP+TFP+", "Cerulean+GFP+TFP+"
), X.micron. = c(1035.1, 1038.5, 1119.9, 193.61, 267.26, 270.37, 
400.89, 435.11, 559.53, 608.22, 680.6, 861.57, 89.74, 896.13, 
921.69, 929.17), Y.micron. = c(140.22, 133.05, 1025.8, 1018.3, 
195.9, 944.59, 1137.2, 905.22, 759.29, 604.25, 756.84, 693.72, 
773.4, 839.33, 35.87, 758.91), Type = c(11L, 11L, 11L, 11L, 11L, 
11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L)), class = "data.frame", row.names = c(NA, 
-16L)), data_type12 = structure(list(Species_Name = c("Cherry+GFP+", 
"Cherry+GFP+", "Cherry+GFP+", "Cherry+GFP+", "Cherry+GFP+", "Cherry+GFP+", 
"Cherry+GFP+", "Cherry+GFP+", "Cherry+GFP+", "Cherry+GFP+", "Cherry+GFP+", 
"Cherry+GFP+", "Cherry+GFP+", "Cherry+GFP+", "Cherry+GFP+", "Cherry+GFP+", 
"Cherry+GFP+"), X.micron. = c(1046.1, 1048.5, 142.71, 151.5, 
263.6, 270.37, 351.06, 377.66, 382.66, 568.52, 663.39, 797.08, 
81.35, 893, 912.42, 98.83, 985.96), Y.micron. = c(1154.7, 1136.6, 
697.62, 656.57, 815.17, 944.59, 809.79, 845.79, 852.37, 802.73, 
750.37, 1079.3, 745.71, 1112.3, 1144.5, 704.17, 1114), Type = c(12L, 
12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 
12L, 12L, 12L)), class = "data.frame", row.names = c(NA, -17L
)), data_type13 = structure(list(Species_Name = c("Cherry+TFP+", 
"Cherry+TFP+", "Cherry+TFP+", "Cherry+TFP+", "Cherry+TFP+", "Cherry+TFP+", 
"Cherry+TFP+"), X.micron. = c(1048.5, 270.37, 351.06, 382.66, 
568.52, 797.73, 98.83), Y.micron. = c(1136.6, 944.59, 809.79, 
852.37, 802.73, 787.09, 704.17), Type = c(13L, 13L, 13L, 13L, 
13L, 13L, 13L)), class = "data.frame", row.names = c(NA, -7L)), 
    data_type14 = structure(list(Species_Name = c("Cherry+GFP+TFP+", 
    "Cherry+GFP+TFP+", "Cherry+GFP+TFP+", "Cherry+GFP+TFP+", 
    "Cherry+GFP+TFP+", "Cherry+GFP+TFP+"), X.micron. = c(1048.5, 
    270.37, 351.06, 382.66, 568.52, 98.83), Y.micron. = c(1136.6, 
    944.59, 809.79, 852.37, 802.73, 704.17), Type = c(14L, 14L, 
    14L, 14L, 14L, 14L)), class = "data.frame", row.names = c(NA, 
    -6L)), data_type15 = structure(list(Species_Name = c("GFP+TFP+", 
    "GFP+TFP+", "GFP+TFP+", "GFP+TFP+", "GFP+TFP+", "GFP+TFP+", 
    "GFP+TFP+", "GFP+TFP+", "GFP+TFP+", "GFP+TFP+", "GFP+TFP+", 
    "GFP+TFP+", "GFP+TFP+", "GFP+TFP+", "GFP+TFP+", "GFP+TFP+", 
    "GFP+TFP+", "GFP+TFP+", "GFP+TFP+", "GFP+TFP+", "GFP+TFP+", 
    "GFP+TFP+", "GFP+TFP+", "GFP+TFP+", "GFP+TFP+", "GFP+TFP+", 
    "GFP+TFP+", "GFP+TFP+", "GFP+TFP+", "GFP+TFP+", "GFP+TFP+", 
    "GFP+TFP+", "GFP+TFP+", "GFP+TFP+"), X.micron. = c(1035.1, 
    1038.5, 1048.5, 1119.9, 193.61, 256.96, 267.26, 270.37, 351.06, 
    382.66, 400.89, 435.11, 559.53, 568.52, 608.22, 680.6, 681.3, 
    696.65, 744.66, 782.66, 785.1, 787.93, 820.52, 861.57, 862.57, 
    89.74, 89.75, 891.63, 896.13, 921.69, 929.17, 935.32, 955.56, 
    98.83), Y.micron. = c(140.22, 133.05, 1136.6, 1025.8, 1018.3, 
    839.18, 195.9, 944.59, 809.79, 852.37, 1137.2, 905.22, 759.29, 
    802.73, 604.25, 756.84, 41.92, 399.51, 982.81, 726.79, 1121.7, 
    1110, 1066.1, 693.72, 738.7, 773.4, 712.31, 644.27, 839.33, 
    35.87, 758.91, 558.68, 609.36, 704.17), Type = c(15L, 15L, 
    15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 
    15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L, 
    15L, 15L, 15L, 15L, 15L, 15L, 15L, 15L)), class = "data.frame", row.names = c(NA, 
    -34L)))

【问题讨论】:

  • 我不清楚为什么 Cerulean+Cherry+ 可以在 $data_type8 而不能在 $data_type5 中。反之排除的逻辑是什么?
  • @akrun,条件是如果 X.micron。和 Y.micron。具有 Species_Name 的数据框的值已经在另一个数据框中,它们只能在一个数据框中,并且必须是名称数量最多的那个。因此,例如,具有 Species_Name = Cerulean+Cherry+ 的数据框中的值不能位于仅具有 Species_Name = Cerulean+(或 Species_Name = Cherry+)的数据框中
  • @Phil 因为我编写代码的方式:一开始我有一个数据帧列表,其中包含 4 个 Species_Name(最短的)信息,我必须匹配 X.microns。和 Y.微米。每个物种之间的值,以便我可以查看两个或更多物种是否在相同的 X 和 Y 位置重合,并创建一个新的 Species_Name 组合原始物种的名称。但是现在我需要删除通过这些组合匹配的原始物种信息。
  • @Phil 我可以编辑问题并共享那部分代码,我已经尝试在该部分执行此操作,但我的编程技能有限,而且我共享的数据是我所能提供的输出得到
  • @AlejandroRivera 所以你想要保留最长的物种名称的规则是什么?也就是说,您想将 Cerulean+Cherry+GFP+ 保留在 Cerulean+Cherry+ 之上,因为前者的字符更多?

标签: r


【解决方案1】:

也许这有帮助

library(dplyr)
library(purrr)
library(stringr)
out <- list_rbind(lst1, names_to = 'data_type') %>% 
  arrange(desc(str_count(Species_Name, fixed("+"))), data_type) %>% 
  distinct(X.micron., Y.micron., .keep_all = TRUE) %>%
  {split(.[-1], .$data_type)}

-输出

> sum(sapply(out, nrow))
[1] 281

【讨论】:

    【解决方案2】:

    这是在将列表分配给名为 my_list 的对象之后。

    library(dplyr)
    library(stringr)
    
    my_list |> 
      bind_rows() |>
      as_tibble() |> 
      arrange(desc(str_length(Species_Name))) |> 
      mutate(row_id = row_number(),
             Species_split = str_split(Species_Name, "\+")) |> 
      tidyr::unnest(Species_split) |> 
      distinct(X.micron., Y.micron., Species_split, .keep_all = TRUE) |> 
      select(-Species_split) |> 
      distinct(row_id, .keep_all = TRUE) |> 
      select(-row_id) |> 
      arrange(Type)
    

    下面是 281 行的完整输出。我粘贴了整个输出,因为老实说我不确定它是否捕获了您正在寻找的内容:

    # A tibble: 281 × 4
        Species_Name             X.micron. Y.micron.  Type
        <chr>                        <dbl>     <dbl> <int>
      1 Cerulean+                   904.      715        1
      2 Cerulean+                  1137.      796.       1
      3 Cerulean+                   297.      363.       1
      4 Cerulean+                   865.      747.       1
      5 Cerulean+                   835.      540.       1
      6 Cerulean+                  1134.      806.       1
      7 Cerulean+                  1092.     1154.       1
      8 Cerulean+                   876.      793.       1
      9 Cerulean+                   792.      720.       1
     10 Cerulean+                   112.      580.       1
     11 Cerulean+                  1146.     1039.       1
     12 Cerulean+                   814.      663.       1
     13 Cherry+                     490.      360.       2
     14 Cherry+                     767.      696.       2
     15 Cherry+                     843.     1096.       2
     16 Cherry+                      58.0     787.       2
     17 Cherry+                     846.      619.       2
     18 Cherry+                     769.      561.       2
     19 Cherry+                     171.      682.       2
     20 Cherry+                     845.     1087.       2
     21 Cherry+                     828.      466.       2
     22 Cherry+                     437.       13.0      2
     23 Cherry+                     347.      840.       2
     24 Cherry+                     292.      600.       2
     25 Cherry+                    1053       548.       2
     26 Cherry+                     501.       37.7      2
     27 Cherry+                     754.      180.       2
     28 Cherry+                     711.      385.       2
     29 Cherry+                      21.4     342.       2
     30 Cherry+                     848.      558.       2
     31 Cherry+                    1015.     1125.       2
     32 Cherry+                     504.       45.2      2
     33 Cherry+                     968.     1142.       2
     34 Cherry+                     875.      626.       2
     35 Cherry+                     750.      599.       2
     36 Cherry+                     707.     1040.       2
     37 Cherry+                     600.      628.       2
     38 Cherry+                     993.      721.       2
     39 Cherry+                     321.      740.       2
     40 Cherry+                     623.       44.6      2
     41 Cherry+                     844.      590.       2
     42 Cherry+                     775.      976.       2
     43 Cherry+                     753.      173.       2
     44 Cherry+                     288.      647.       2
     45 Cherry+                     859.      568.       2
     46 Cherry+                     296.      641.       2
     47 Cherry+                      77.4     664.       2
     48 Cherry+                     655.      703.       2
     49 Cherry+                       3.28    330.       2
     50 Cherry+                      91.5     622.       2
     51 Cherry+                    1146.     1081.       2
     52 Cherry+                     727.      638.       2
     53 Cherry+                      57.8     605.       2
     54 Cherry+                     221.      997.       2
     55 Cherry+                     601.      776.       2
     56 Cherry+                    1021.     1131.       2
     57 Cherry+                     323.      749.       2
     58 Cherry+                     151.      698.       2
     59 Cherry+                     478.      950.       2
     60 Cherry+                     618.     1016.       2
     61 Cherry+                     616.       41.1      2
     62 Cherry+                     831.      762.       2
     63 Cherry+                     627.     1014.       2
     64 GFP+                         60.8      45.2      3
     65 GFP+                        187.      700.       3
     66 GFP+                        406.      865.       3
     67 GFP+                        996.     1153        3
     68 GFP+                        788.     1086.       3
     69 GFP+                        403.      758.       3
     70 GFP+                        508.      910.       3
     71 GFP+                        172.      518.       3
     72 GFP+                        674.       44.5      3
     73 GFP+                        862.      528.       3
     74 GFP+                         43.5     589.       3
     75 GFP+                        874.     1129.       3
     76 GFP+                        629.      780.       3
     77 GFP+                        625.      833.       3
     78 GFP+                        168.      691.       3
     79 GFP+                        520.     1036.       3
     80 GFP+                        454.      111.       3
     81 GFP+                        231.      664.       3
     82 GFP+                        182.      519.       3
     83 GFP+                        236.      834.       3
     84 GFP+                         74.5     776.       3
     85 GFP+                        492.     1039.       3
     86 GFP+                       1077.      732.       3
     87 GFP+                        497.     1046        3
     88 GFP+                        863.     1109.       3
     89 GFP+                        676.      262.       3
     90 GFP+                        497.      261.       3
     91 GFP+                        430.      731.       3
     92 GFP+                        500.      269.       3
     93 GFP+                        876.     1152.       3
     94 GFP+                        723.      760.       3
     95 GFP+                        243.      651.       3
     96 GFP+                       1015.      646.       3
     97 GFP+                        430.      847.       3
     98 GFP+                        401.      857.       3
     99 GFP+                        152.     1035        3
    100 GFP+                        717.      749.       3
    101 GFP+                        551.      849.       3
    102 GFP+                        764.     1080.       3
    103 GFP+                        968.     1113.       3
    104 GFP+                         87.5     591.       3
    105 GFP+                        547.       84.3      3
    106 GFP+                       1053.      492.       3
    107 GFP+                        506.      789.       3
    108 GFP+                        848.     1025.       3
    109 GFP+                       1021       720.       3
    110 GFP+                        916.      671.       3
    111 GFP+                       1113.     1041.       3
    112 GFP+                        606.        3.05     3
    113 GFP+                        877.     1139.       3
    114 GFP+                        527.      241.       3
    115 GFP+                        648.      152.       3
    116 GFP+                        538.     1070.       3
    117 GFP+                        657.      775.       3
    118 GFP+                        430.      777.       3
    119 GFP+                        339.     1012.       3
    120 GFP+                        223.      894.       3
    121 GFP+                        763.     1068.       3
    122 GFP+                        622.      143.       3
    123 GFP+                        284.     1054.       3
    124 GFP+                        145.     1032.       3
    125 GFP+                        752.     1080.       3
    126 GFP+                        874.      662.       3
    127 GFP+                         68.4     607.       3
    128 GFP+                        285.     1025.       3
    129 GFP+                        594.      124.       3
    130 GFP+                        323.      889.       3
    131 GFP+                        660.      148.       3
    132 GFP+                        872.      530.       3
    133 GFP+                        541.      240.       3
    134 GFP+                        279.     1022.       3
    135 GFP+                        517.      789.       3
    136 GFP+                        930.      810.       3
    137 GFP+                        880.      718.       3
    138 GFP+                        583.       63.9      3
    139 GFP+                        193.      707.       3
    140 GFP+                        618.      212.       3
    141 GFP+                        524.     1041        3
    142 GFP+                        286.     1015.       3
    143 GFP+                         61.6     572.       3
    144 GFP+                        871.      766.       3
    145 GFP+                        223.      711.       3
    146 GFP+                        821.     1098        3
    147 GFP+                        524.      788.       3
    148 GFP+                        361.      862.       3
    149 GFP+                        242.      959.       3
    150 GFP+                        588.      763.       3
    151 GFP+                        821.      721.       3
    152 GFP+                        881.      687.       3
    153 GFP+                        896.      809.       3
    154 GFP+                        410.      562.       3
    155 GFP+                        556.      856.       3
    156 GFP+                        171.      507.       3
    157 GFP+                        915.      732        3
    158 GFP+                       1026.      790.       3
    159 GFP+                        690.      404.       3
    160 GFP+                        990.     1159.       3
    161 GFP+                        504.      707.       3
    162 GFP+                        190.      583        3
    163 GFP+                       1140.      688.       3
    164 GFP+                        452.       30        3
    165 GFP+                        574.       93.1      3
    166 GFP+                        868.      686.       3
    167 GFP+                        378.      728.       3
    168 GFP+                         94.8     659.       3
    169 GFP+                        887.      741.       3
    170 GFP+                        658.     1097.       3
    171 GFP+                        825.      717.       3
    172 GFP+                        908.     1141        3
    173 GFP+                        317.      894.       3
    174 GFP+                        507.      932.       3
    175 GFP+                        283.      715.       3
    176 GFP+                         35.1     781.       3
    177 GFP+                        380.      706.       3
    178 GFP+                        483.      797.       3
    179 GFP+                       1003.     1050.       3
    180 GFP+                        806.     1070.       3
    181 GFP+                        368.      107.       3
    182 GFP+                        708.      370.       3
    183 GFP+                        743.      739.       3
    184 GFP+                        672.      254.       3
    185 GFP+                        600.      826.       3
    186 GFP+                        537.     1035.       3
    187 GFP+                        312.      732.       3
    188 GFP+                        215.      495.       3
    189 GFP+                        759.     1072.       3
    190 GFP+                        437.     1068.       3
    191 GFP+                        330.      888.       3
    192 TFP+                        457.      259.       4
    193 TFP+                        464.       27.3      4
    194 TFP+                        458.      250.       4
    195 TFP+                        287.      671.       4
    196 TFP+                        512.      224.       4
    197 TFP+                        529.      697.       4
    198 TFP+                        298.      515.       4
    199 TFP+                       1000.     1098.       4
    200 TFP+                        514       215.       4
    201 TFP+                       1081.     1014.       4
    202 TFP+                        592.        8.79     4
    203 TFP+                        591.      986.       4
    204 TFP+                        822.      825.       4
    205 TFP+                        809.      383.       4
    206 TFP+                        447.      248.       4
    207 TFP+                        457.      239.       4
    208 TFP+                        816.      805.       4
    209 TFP+                        507.      243.       4
    210 TFP+                        961.      465.       4
    211 TFP+                        613.      822.       4
    212 TFP+                        129.      940.       4
    213 TFP+                        279.      674.       4
    214 TFP+                        828.     1061.       4
    215 TFP+                        127.      578.       4
    216 TFP+                        391.      609.       4
    217 TFP+                        621.      815.       4
    218 TFP+                        647.      116.       4
    219 TFP+                        627.      110.       4
    220 TFP+                        110.      964.       4
    221 TFP+                        525.      706.       4
    222 TFP+                         93.6     762.       4
    223 TFP+                        652.      104.       4
    224 TFP+                       1018.     1092.       4
    225 TFP+                        956.      471.       4
    226 TFP+                        634.      105.       4
    227 Cerulean+GFP+              1014.      717.       6
    228 Cerulean+GFP+              1066.     1002.       6
    229 Cerulean+GFP+              1099.      530.       6
    230 Cerulean+GFP+               114.      588.       6
    231 Cerulean+GFP+               723.      787.       6
    232 Cerulean+GFP+               880.      769.       6
    233 Cerulean+TFP+              1013.     1087.       7
    234 Cerulean+TFP+               673.      764.       7
    235 Cerulean+TFP+               794.      780.       7
    236 Cerulean+Cherry+GFP+        378.      846.       8
    237 Cerulean+Cherry+GFP+TFP+    270.      945.      10
    238 Cerulean+GFP+TFP+          1035.      140.      11
    239 Cerulean+GFP+TFP+          1038.      133.      11
    240 Cerulean+GFP+TFP+          1120.     1026.      11
    241 Cerulean+GFP+TFP+           194.     1018.      11
    242 Cerulean+GFP+TFP+           267.      196.      11
    243 Cerulean+GFP+TFP+           401.     1137.      11
    244 Cerulean+GFP+TFP+           435.      905.      11
    245 Cerulean+GFP+TFP+           560.      759.      11
    246 Cerulean+GFP+TFP+           608.      604.      11
    247 Cerulean+GFP+TFP+           681.      757.      11
    248 Cerulean+GFP+TFP+           862.      694.      11
    249 Cerulean+GFP+TFP+            89.7     773.      11
    250 Cerulean+GFP+TFP+           896.      839.      11
    251 Cerulean+GFP+TFP+           922.       35.9     11
    252 Cerulean+GFP+TFP+           929.      759.      11
    253 Cherry+GFP+                1046.     1155.      12
    254 Cherry+GFP+                 143.      698.      12
    255 Cherry+GFP+                 152.      657.      12
    256 Cherry+GFP+                 264.      815.      12
    257 Cherry+GFP+                 663.      750.      12
    258 Cherry+GFP+                 797.     1079.      12
    259 Cherry+GFP+                  81.4     746.      12
    260 Cherry+GFP+                 893      1112.      12
    261 Cherry+GFP+                 912.     1144.      12
    262 Cherry+GFP+                 986.     1114       12
    263 Cherry+TFP+                 798.      787.      13
    264 Cherry+GFP+TFP+            1048.     1137.      14
    265 Cherry+GFP+TFP+             351.      810.      14
    266 Cherry+GFP+TFP+             383.      852.      14
    267 Cherry+GFP+TFP+             569.      803.      14
    268 Cherry+GFP+TFP+              98.8     704.      14
    269 GFP+TFP+                    257.      839.      15
    270 GFP+TFP+                    681.       41.9     15
    271 GFP+TFP+                    697.      400.      15
    272 GFP+TFP+                    745.      983.      15
    273 GFP+TFP+                    783.      727.      15
    274 GFP+TFP+                    785.     1122.      15
    275 GFP+TFP+                    788.     1110       15
    276 GFP+TFP+                    821.     1066.      15
    277 GFP+TFP+                    863.      739.      15
    278 GFP+TFP+                     89.8     712.      15
    279 GFP+TFP+                    892.      644.      15
    280 GFP+TFP+                    935.      559.      15
    281 GFP+TFP+                    956.      609.      15
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-26
      • 2020-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-10
      • 1970-01-01
      相关资源
      最近更新 更多