如果指定了return(),ggplot2不会在函数内生成绘图

时间:2016-07-20 13:54:18

标签: r function ggplot2

我的数据看起来像这样

/**
 * Balancing operations.
 *
 * Implementations of rebalancings during insertion and deletion are
 * slightly different than the CLR version.  Rather than using dummy
 * nilnodes, we use a set of accessors that deal properly with null.  They
 * are used to avoid messiness surrounding nullness checks in the main
 * algorithms.
 */

我正在尝试使用这个DF来制作情节。如果我指定以下函数,我会按预期得到图:

gdf <- structure(list(massIon = c(734.086547851562, 734.138122558594, 
                           734.225830078125, 734.249145507812, 734.280029296875, 734.423034667969, 
                           734.565124511719, 734.587707519531, 734.707946777344, 734.751586914062, 
                           734.763366699219, 734.848266601562, 734.92919921875, 734.991088867188, 
                           735.09814453125, 735.135437011719, 735.179016113281, 735.280822753906, 
                           735.423400878906, 735.565673828125, 735.70751953125, 735.849609375, 
                           735.992248535156, 736.135192871094, 736.278503417969, 736.421630859375, 
                           736.436096191406, 736.565185546875, 736.589599609375, 736.709533691406, 
                           736.754760742188, 734.083618164062, 734.097473144531, 734.136657714844, 
                           734.223388671875, 734.251525878906, 734.278991699219, 734.421569824219, 
                           734.564025878906, 734.586242675781, 734.67626953125, 734.7060546875, 
                           734.753051757812, 734.761779785156, 734.84716796875, 734.928039550781, 
                           734.989990234375, 735.0947265625, 735.134460449219, 735.177856445312, 
                           735.279479980469, 735.422241210938, 735.564758300781, 735.707092285156, 
                           735.849609375, 735.992431640625, 736.135620117188, 736.27880859375, 
                           736.421752929688, 736.436096191406, 736.5654296875, 736.589477539062, 
                           736.677307128906, 736.709045410156, 736.755554199219, 734.085205078125, 
                           734.097839355469, 734.137878417969, 734.225219726562, 734.251953125, 
                           734.2802734375, 734.421997070312, 734.564880371094, 734.587524414062, 
                           734.676696777344, 734.707763671875, 734.749450683594, 734.764282226562, 
                           734.848449707031, 734.929382324219, 734.954528808594, 734.991394042969, 
                           735.096008300781, 735.1357421875, 735.179260253906, 735.28076171875, 
                           735.423400878906, 735.565795898438, 735.707763671875, 735.850036621094, 
                           735.99267578125, 736.135803222656, 736.278991699219, 736.421936035156, 
                           736.4365234375, 736.565490722656, 736.589477539062, 736.668518066406, 
                           736.709289550781, 736.754272460938, 734.079528808594, 734.097412109375, 
                           734.136535644531, 734.224426269531, 734.250549316406, 734.279113769531, 
                           734.421752929688, 734.563415527344, 734.587280273438, 734.675659179688, 
                           734.706665039062, 734.760375976562, 734.846801757812, 734.928405761719, 
                           734.989807128906, 735.095092773438, 735.134216308594, 735.178100585938, 
                           735.279418945312, 735.422241210938, 735.564880371094, 735.707336425781, 
                           735.849975585938, 735.992858886719, 736.135986328125, 736.279235839844, 
                           736.422058105469, 736.436462402344, 736.565856933594, 736.588928222656, 
                           736.630920410156, 736.669677734375, 736.709594726562, 736.755432128906, 
                           734.083435058594, 734.097351074219, 734.136535644531, 734.219421386719, 
                           734.251037597656, 734.278564453125, 734.421264648438, 734.563659667969, 
                           734.585205078125, 734.674926757812, 734.70556640625, 734.748901367188, 
                           734.760437011719, 734.847045898438, 734.927917480469, 734.989868164062, 
                           735.037902832031, 735.093994140625, 735.13427734375, 735.177917480469, 
                           735.279174804688, 735.422058105469, 735.564697265625, 735.707275390625, 
                           735.849975585938, 735.992858886719, 736.136047363281, 736.279235839844, 
                           736.421875, 736.436401367188, 736.566101074219, 736.587890625, 
                           736.632934570312, 736.668090820312, 736.709228515625, 736.754028320312
), intensityIon = c(3369.7783203125, 62668.359375, 3346.8173828125, 
                    4166.25, 38955.359375, 28326.6953125, 12406.7568359375, 2940.10620117188, 
                    11001.2265625, 4778.2841796875, 4981.82470703125, 17958.982421875, 
                    28376.451171875, 29736.69140625, 4882.0107421875, 67482.0078125, 
                    36598.03125, 1163487.5, 3340540, 4580437.5, 4353969.5, 3201575.25, 
                    1966156.125, 1009626.4375, 449687.46875, 174554.875, 46537.47265625, 
                    72899.625, 5335.42333984375, 25350.822265625, 12248.0361328125, 
                    5849.44580078125, 2603.60034179688, 75505.1015625, 3237.70678710938, 
                    5195.67626953125, 47783.75, 34787.12890625, 14090.228515625, 
                    3573.07104492188, 2053.76538085938, 11984.4794921875, 4440.96533203125, 
                    5120.30224609375, 21926.3359375, 37489.01953125, 40297.5859375, 
                    6474.61767578125, 79553.09375, 48219.3125, 1427811.375, 4012189.25, 
                    5418450.5, 5191654.5, 3824240.25, 2332689, 1223285.875, 558463.875, 
                    210294.75, 65035.4453125, 86746.40625, 7106.51025390625, 2679.1181640625, 
                    37384.703125, 13463.876953125, 2908.2802734375, 3203.06079101562, 
                    60074.76953125, 2547.7421875, 5985.28271484375, 35261.69921875, 
                    31227.484375, 12540.951171875, 3258.0654296875, 2077.44360351562, 
                    12700.0927734375, 3649.46533203125, 3891.74267578125, 16675.33203125, 
                    23991.890625, 1148.64501953125, 31212.93359375, 5280.66796875, 
                    60635.5234375, 37607.0703125, 1073698.75, 3090356, 4178685.5, 
                    3935504.75, 2917404.25, 1781294.75, 910253.0625, 396523.03125, 
                    160822.890625, 46266.70703125, 63105.62890625, 5078.06005859375, 
                    2246.47265625, 23594.875, 9688.6162109375, 5552.02294921875, 
                    3007.59033203125, 72422.828125, 1796.86364746094, 7815.77392578125, 
                    45502.55078125, 35431.9921875, 17306.40625, 4538.57958984375, 
                    2192.95336914062, 13699.716796875, 5191.8955078125, 21269.6953125, 
                    36717.2109375, 41819.6875, 6674.76416015625, 84648.109375, 49765.73046875, 
                    1341553.25, 3668069.25, 4965294.5, 4784271, 3499671.5, 2126324, 
                    1128580.125, 508869.5625, 192451.390625, 63708.30859375, 75511.7265625, 
                    4508.314453125, 1249.642578125, 2039.47509765625, 30574.12890625, 
                    10716.76953125, 4854.6728515625, 3071.67846679688, 74964.921875, 
                    2306.33325195312, 6262.71630859375, 45269.28125, 29464.10546875, 
                    17668.0546875, 6145.65234375, 2445.11010742188, 14499.955078125, 
                    3219.11669921875, 5291.048828125, 24043.71484375, 34359.21875, 
                    47669.75390625, 2144.18090820312, 7090.70556640625, 93540.703125, 
                    54741.6796875, 1393072.75, 3779077.75, 5103876.5, 4832735, 3558083.75, 
                    2205681, 1134702.25, 511191.125, 208471.765625, 64740.41796875, 
                    78857.2578125, 7328.9365234375, 1772.92419433594, 1772.75671386719, 
                    35608.55859375, 11448.6904296875), source = c(19, 19, 19, 19, 
                                                                  19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 
                                                                  19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 
                                                                  20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 
                                                                  20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 205, 205, 
                                                                  205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 
                                                                  205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 
                                                                  205, 205, 205, 205, 205, 205, 205, 206, 206, 206, 206, 206, 206, 
                                                                  206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 
                                                                  206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 
                                                                  206, 206, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 
                                                                  207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 
                                                                  207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207), 
charge_state_7 = c(NA, NA, NA, NA, NA, NA, 734.560870874743, 
                   NA, 734.704207303314, NA, NA, 734.847543731886, NA, 734.990880160457, 
                   NA, 735.134216589029, NA, 735.2775530176, 735.420889446171, 
                   735.564225874743, 735.707562303314, 735.850898731886, 735.994235160457, 
                   736.137571589029, 736.2809080176, NA, NA, NA, NA, NA, NA, 
                   NA, NA, NA, NA, NA, NA, NA, 734.560870874743, NA, NA, 734.704207303314, 
                   NA, NA, 734.847543731886, NA, 734.990880160457, NA, 735.134216589029, 
                   NA, 735.2775530176, 735.420889446171, 735.564225874743, 735.707562303314, 
                   735.850898731886, 735.994235160457, 736.137571589029, 736.2809080176, 
                   NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 734.560870874743, 
                   NA, NA, 734.704207303314, NA, NA, 734.847543731886, NA, NA, 
                   734.990880160457, NA, 735.134216589029, NA, 735.2775530176, 
                   735.420889446171, 735.564225874743, 735.707562303314, 735.850898731886, 
                   735.994235160457, 736.137571589029, 736.2809080176, NA, NA, 
                   NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 734.560870874743, 
                   NA, NA, 734.704207303314, NA, 734.847543731886, NA, 734.990880160457, 
                   NA, 735.134216589029, NA, 735.2775530176, 735.420889446171, 
                   735.564225874743, 735.707562303314, 735.850898731886, 735.994235160457, 
                   736.137571589029, 736.2809080176, NA, NA, NA, NA, NA, NA, 
                   NA, NA, NA, NA, NA, NA, NA, NA, NA, 734.560870874743, NA, 
                   NA, 734.704207303314, NA, NA, 734.847543731886, NA, 734.990880160457, 
                   NA, NA, 735.134216589029, NA, 735.2775530176, 735.420889446171, 
                   735.564225874743, 735.707562303314, 735.850898731886, 735.994235160457, 
                   736.137571589029, 736.2809080176, NA, NA, NA, NA, NA, NA, 
                   NA, NA), assigned = c(FALSE, FALSE, FALSE, FALSE, FALSE, 
                                         FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, 
                                         FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, 
                                         TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, 
                                         FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, 
                                         FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, 
                                         TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, 
                                         FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, 
                                         FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, 
                                         FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, 
                                         TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, 
                                         FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, 
                                         FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, 
                                         FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, 
                                         TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, 
                                         FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, 
                                         FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, 
                                         TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, 
                                         FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE)), row.names = c("19.5025", 
                                                                                                                 "19.5026", "19.5027", "19.5028", "19.5029", "19.5030", "19.5031", 
                                                                                                                 "19.5032", "19.5033", "19.5034", "19.5035", "19.5036", "19.5037", 
                                                                                                                 "19.5038", "19.5039", "19.5040", "19.5041", "19.5042", "19.5043", 
                                                                                                                 "19.5044", "19.5045", "19.5046", "19.5047", "19.5048", "19.5049", 
                                                                                                                 "19.5050", "19.5051", "19.5052", "19.5053", "19.5054", "19.5055", 
                                                                                                                 "20.4598", "20.4599", "20.4600", "20.4601", "20.4602", "20.4603", 
                                                                                                                 "20.4604", "20.4605", "20.4606", "20.4607", "20.4608", "20.4609", 
                                                                                                                 "20.4610", "20.4611", "20.4612", "20.4613", "20.4614", "20.4615", 
                                                                                                                 "20.4616", "20.4617", "20.4618", "20.4619", "20.4620", "20.4621", 
                                                                                                                 "20.4622", "20.4623", "20.4624", "20.4625", "20.4626", "20.4627", 
                                                                                                                 "20.4628", "20.4629", "20.4630", "20.4631", "205.5015", "205.5016", 
                                                                                                                 "205.5017", "205.5018", "205.5019", "205.5020", "205.5021", "205.5022", 
                                                                                                                 "205.5023", "205.5024", "205.5025", "205.5026", "205.5027", "205.5028", 
                                                                                                                 "205.5029", "205.5030", "205.5031", "205.5032", "205.5033", "205.5034", 
                                                                                                                 "205.5035", "205.5036", "205.5037", "205.5038", "205.5039", "205.5040", 
                                                                                                                 "205.5041", "205.5042", "205.5043", "205.5044", "205.5045", "205.5046", 
                                                                                                                 "205.5047", "205.5048", "205.5049", "206.4499", "206.4500", "206.4501", 
                                                                                                                 "206.4502", "206.4503", "206.4504", "206.4505", "206.4506", "206.4507", 
                                                                                                                 "206.4508", "206.4509", "206.4510", "206.4511", "206.4512", "206.4513", 
                                                                                                                 "206.4514", "206.4515", "206.4516", "206.4517", "206.4518", "206.4519", 
                                                                                                                 "206.4520", "206.4521", "206.4522", "206.4523", "206.4524", "206.4525", 
                                                                                                                 "206.4526", "206.4527", "206.4528", "206.4529", "206.4530", "206.4531", 
                                                                                                                 "206.4532", "207.4428", "207.4429", "207.4430", "207.4431", "207.4432", 
                                                                                                                 "207.4433", "207.4434", "207.4435", "207.4436", "207.4437", "207.4438", 
                                                                                                                 "207.4439", "207.4440", "207.4441", "207.4442", "207.4443", "207.4444", 
                                                                                                                 "207.4445", "207.4446", "207.4447", "207.4448", "207.4449", "207.4450", 
                                                                                                                 "207.4451", "207.4452", "207.4453", "207.4454", "207.4455", "207.4456", 
                                                                                                                 "207.4457", "207.4458", "207.4459", "207.4460", "207.4461", "207.4462", 
                                                                                                                 "207.4463"), .Names = c("massIon", "intensityIon", "source", 
                                                                                                                                         "charge_state_7", "assigned"), class = "data.frame")

然而,只需在函数中添加return(“Helo stackoverflow”)就会产生一个空图:

plotGG <- function (gdf){
  x11()
  ggplot (spectrumTable, aes (massIon, intensityIon)) +
  geom_segment(aes(xend = massIon, colour = assigned), yend = 0) +
  facet_wrap( ~ source, scales = "free_y")
}

plotGG(gdf)

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

如果您没有指定返回值,则返回上次计算的值。尝试:

foo <- function(x) {5+1}

foo() 

在你的第一个案例中,返回的是因为它是最后计算的东西,就像我的简短示例中的6。如果您声明了一个返回值,那么只返回该值,并且该块/函数中创建的所有其他内容都是垃圾回收的,包括绘图。

如果你需要返回一个情节以及&#34; Hello stackoverflow&#34;,则返回一个图表列表和&#34; Hello stackoverflow&#34;。这将有效。