[R] Maximum length for a -e argument to Rscript?

Ben Haller bhaller at mac.com
Fri Apr 21 09:44:01 CEST 2017


  Hi!  I’m attempting to use Rscript to do some automated plotting.  It is working well, except that I seem to be running into a maximum line length issue, and I’m wondering if it is a bug on your end.  Here’s an example of the command I’m trying to run:

/usr/local/bin/Rscript -e '{x <- c(-1.31171, -0.686165, 1.62771, 0.320195, -0.322011, 1.66518, -0.271971, -0.665367, 0.516482, -0.716343, -0.317471, 0.068046, -0.100371, -1.15907, 0.263329, -0.936049, -0.852444, 0.358817, -0.233959, 0.209891, -0.831575, -0.952987, -0.0420206, -1.78527, -0.280584, -0.62353, 1.42597, 0.127994, 0.0751232, 0.896835, -0.319488, 0.897876, 0.18457, 0.779571, -0.0543194, 0.226722, -0.769983, -0.723463, 0.144386, -0.468544, -0.349417, 0.336786, 0.749212, -1.62397, 0.683075, -0.746449, 0.300921, -0.365468, 0.548271, 1.13169, -1.34042, -0.0740572, 1.34986, 0.531771, -0.147157, 0.824894, -1.05816, 1.58867, -0.885764, 1.11912, 0.361512, 1.77985, 0.585099, -1.205, 2.44134, -0.331372, -0.346322, 0.0535267, -1.75089, 0.0773243, -1.07846, -1.29632, 1.0622, 1.34867, 0.199777, 0.197516, 0.574185, 1.06555, -0.885166, -0.788576, -1.46061, -1.54026, 0.690576, -0.88821, 0.343747, -0.100751, -0.865596, -0.128504, 0.222334, -1.18932, -0.555258, -0.557368, 0.219272, 0.298858, 0.848022, 0.142608, 1.10082, -0.348039, 0.0566489, 0.662136, 0.50451, -0.909399, 1.02446, 1.40592, -0.114786, -1.10718, 2.02549, 0.0818607, -1.037, 1.18961, -0.204, 2.83165, -0.959653, -0.393082, -0.463351, 0.914054, 1.14472, -1.32927, 1.25416, 0.372267, 0.410832, 1.04187, 1.22288, 1.27131, 0.0949385, 0.194053, -0.226184, -0.502155, -1.36834, -0.000591861, -0.565903, 1.14099, 1.67811, 0.331709, -0.756879, 0.889596, 0.718098, 0.740242, -0.861818, 0.0332746, 1.01745, 0.584536, -1.14245, -0.444485, -1.34237, 0.660603, 1.16048, -0.898828, 0.965746, -1.16953, -2.33417, 0.591078, -0.364892, 0.0719267, -1.21676, 1.12646, 1.37534, 0.0712832, 1.22889, -0.0110024, 0.248213, -1.12013, -0.525197, -0.352156, -0.317182, -0.89552, 1.53422, -1.36777, 1.52099, 1.18789, -3.15251, 1.24008, -0.564289, -0.515629, -0.0920464, 2.94027, 0.895481, -0.157643, -0.347874, -0.290823, -0.771436, 1.29285, 0.216689, -1.86856, 2.24075, 0.888635, 0.430417, -0.585856, 1.13119, -0.243977, 0.544491, 0.921995, 0.815365, 1.2584, -1.29347, 0.0574579, 0.990557, -1.58657, -0.264373, 0.865893, 0.599298, -0.417531, 0.132897, 1.88597, 1.33112, -0.880904, 0.0762161, 0.0567852, 0.593295, -0.632135, 0.885625, 0.365863, -0.17885, 0.420185, -0.508275, 0.974357, 0.628085, 0.710578, 1.72447, 1.38488, 1.01301, 1.30015, 0.260501, 0.808981, 0.440228, 0.416344, -1.66273, -0.397224, -0.512086, -0.175854, -0.663143, 0.369712, -1.01654, 0.660465, 0.124851, -1.51101, -0.95725, 2.09893, 1.26819, 1.08086, 0.493204, 0.79073, 1.49191, 0.563689, 0.414473, 2.27361, 0.871923, 0.193703, -0.185039, -0.312859, -1.42267, -2.11561, 0.311996, -0.0906527, 1.19139, 1.57502, 1.10587, 0.416333, 2.35374, -1.0531, 0.0450512, 0.979958, 0.398269, 0.0897618, -0.855305, -1.59337, -0.084904, 0.245872, 1.27115, 1.3512, -0.166962, 1.01098, -1.19854, -2.05932, -0.98, 0.704973, 0.694688, 1.20408, -1.12553, 0.770056, 1.01602, 0.295223, -1.18801, 1.51707, 1.1418, -0.148787, 1.28886, 1.23981, 1.67984, 0.0185941, -0.877581, 0.495042, -0.368668, 1.59972, -2.20849, -1.36852, -0.972566, -1.01848, -0.366674, -2.60273, -0.540706, -0.475797, 0.227651, -1.11476, 1.73452, -0.212185, 3.04994, -0.251225, -0.0443482, -0.489125, 0.557936, -0.246389, -0.954287, 0.388668, 0.759049, -0.501683, -1.98722, 0.158712, -0.897082, -1.17644, 0.192465, -1.49901, -0.289129, -0.0460198, -0.520331, 0.432488, -0.471775, 1.21482, 0.998091, -0.794933, -0.36989, 0.937091, 1.27297, 1.06108, -0.784307, 0.70919, -0.309221, -0.516031, 0.479702, -0.669637, 1.60288, 0.657474, -0.666286, -1.01816, -0.452818, -0.283749, 1.05511, -1.2002, 0.112269, -1.37403, 1.00512, 0.664936, 0.600516, -1.08099, -0.705522, 0.103051, 0.0461179, 1.74404, 0.727475, 2.41175, 1.20414, 1.71095, 0.0957544, 0.610755, 0.545194, -0.936381, 0.190467, 0.485791, 0.0855697, 0.142676, 0.721754, -1.84506, 2.1227, -1.1271, -1.11228, -1.2807, 0.13385, 0.228727, -0.34391, 1.09837, -0.37053, 0.832574, 0.673463, 0.717732, -0.307687, 1.12486, 0.159803, -1.51251, 1.403, 2.0215, 0.010914, -0.543749, 0.137119, 0.200364, -0.104029, -0.930966, -1.56781, -0.526978, -0.537582, 1.11872, -0.99061, -0.501421, 1.21982, 0.813201, -0.539109, 0.433523, -0.0615188, 2.04298, 0.697692, 1.34515, 1.7298, 0.515137, 2.08119, 0.550985, 1.49876, 1.31187, 0.920405, 0.597678, 0.884353, -0.732892, -0.143545, -0.236836, -0.330872, 1.55577, -1.74473, -0.493322, 1.46375, 1.14347, 1.76164, 1.73099, -0.234701, -0.0546848, 0.346991, -0.393301, 1.34267, -1.58519, -0.381789, 0.622675, 1.34655, 2.84895, -0.371, -0.519666, -1.64944, 0.573592, 1.06484, -0.0239894, -0.604563, 0.0680641, -0.881325, 1.07265, 0.182585, 0.373288, 2.20228, -0.763593, -0.25659, 1.9397, -0.166943, -0.672522, -1.35983, 0.227406, 0.49471, -1.23535, -0.479552, 1.97798, 0.418181, 1.23454, -0.0767748, 0.828642, -0.0348468, -0.264499, 0.76699, -0.910363, -2.11408, -0.209169, 0.902191, -2.27096, 0.098513, -0.380699, -0.231276, -0.0296834, 0.834972, -0.658283, 0.616493, 0.198916, -1.89783, -1.30219, 0.51036, 0.195825, -1.68961, -1.27838, 0.879616, 0.566719, 1.21876, 0.270402, -1.38261, 0.365878, 1.54191, 1.25104, 1.23067, 1.87261);y <- c(0.986442, 2.65684, -1.79726, 1.79999, -2.43971, -1.68358, -1.84081, -2.27973, 2.96046, 2.61837, 1.48756, 1.63497, 1.46876, 2.09348, -0.925101, 3.6792, -2.03618, 1.33232, -0.0652269, 0.809911, -2.82019, -1.87691, 1.1284, 0.249619, -2.94777, 3.00423, -2.79901, -0.110801, -3.546, 1.67156, -3.10723, -3.24205, 3.16911, -3.24227, -1.29801, 0.271933, -2.83573, -0.79973, -2.34429, -0.905163, -0.197905, -3.05664, -0.694481, 1.89301, -2.70264, 2.94361, -2.32469, 1.9576, 1.73556, -3.29777, -1.54311, -2.03172, -0.871756, 0.77581, 3.7692, 1.54446, 3.92129, 0.160296, -3.45486, -1.56317, -2.72913, 0.695854, 3.15786, 1.1006, 3.25649, -1.57206, -3.15353, 0.242301, -1.95855, -0.256919, 3.04782, -0.505045, -2.35542, 2.11649, -1.73363, 2.65149, 3.66302, 0.457907, -2.2759, -2.36105, -2.49263, -2.9784, -3.53525, -0.699404, 3.17647, -1.52424, 2.72699, 3.82774, 0.100029, 3.42107, 1.74672, 3.1279, -0.793162, -0.025109, 1.07262, 2.4517, -2.00605, -3.6625, -2.57031, -2.43599, 2.56309, -1.31707, -2.10777, -3.75394, 0.954311, 0.496025, 3.82545, -3.74259, -1.96145, 0.366455, 3.97474, 3.26111, -3.69904, 2.07392, 0.591191, -3.34162, -0.926126, 1.03966, -2.68754, -2.69653, 0.651845, 2.82333, 2.25596, 3.26545, -2.57379, 2.69137, -3.08119, 2.99114, -3.86005, -1.30995, 1.80096, 1.39404, -2.6482, -2.12922, -3.28834, -1.06563, -1.6683, -2.023, 1.60516, -1.67431, 1.38595, 0.287423, 2.56888, -2.99169, 0.549401, 2.31817, -2.48251, 2.20152, 1.0531, -3.60478, 0.327999, 0.475523, -0.454324, -2.63147, -1.61249, -1.65507, 1.13203, 0.218, 2.87289, -0.279036, -0.316795, 3.22757, -2.25, -1.10923, 0.0949814, -2.60818, -0.181803, 3.65484, 2.86193, 0.940815, 3.5461, 1.23983, 2.01177, -0.428626, 3.5539, -2.63454, 1.63098, 3.69696, 0.404995, 0.480342, 3.22724, -3.57127, -2.38176, -1.23267, 0.738668, 1.64966, 1.37331, -2.60132, -1.60081, 2.57359, -3.58266, 1.32347, 3.24265, 3.81, 3.90706, -0.407994, 2.42083, 3.34477, 3.43151, -1.08974, -2.93732, 2.39014, -1.36511, -0.101514, -1.46445, 2.11849, -3.63955, -1.57038, 3.41777, -1.00185, -0.0702487, 2.01317, -3.38133, 3.64754, -0.740182, -3.64028, -3.77238, 2.45613, -3.11631, 3.82543, 2.15285, -0.790691, -1.22153, -0.943069, -3.37327, 1.19097, 1.48834, 0.502127, -2.90383, -3.4236, -0.676889, 3.41785, 2.54728, -2.60006, -3.25969, -1.85346, -2.8088, 3.3905, -1.34015, -1.3877, 2.38485, 3.16688, -3.26326, -1.94801, 0.0878641, 0.492529, 2.62313, -2.08994, -1.77721, 1.92357, 0.739532, 0.869021, -3.82981, 3.92422, -1.16293, 3.82139, -1.67119, 1.1145, -2.24382, -1.93777, -0.109559, -0.350947, 1.94832, -2.54192, 1.224, 0.797731, 0.767982, -2.93565, -2.72896, 1.2624, 1.91513, -3.96412, 3.43534, 0.358804, 3.05541, -0.213663, 0.38204, -0.539063, -0.897154, -2.91298, -0.198784, -0.0732228, 2.99983, 3.54078, 2.27245, 3.87904, 2.99445, -0.705307, 0.187173, 1.79102, 1.69581, 2.08613, 1.54021, 0.7471, -1.19008, 2.44732, -1.59312, 1.5387, -0.526756, 3.06958, -1.707, -2.46148, -0.523427, -0.675584, -3.02611, -2.22116, -3.4546, -2.94353, 2.1346, 3.51197, 1.85137, 1.7461, -0.875901, -2.13891, -2.1714, 1.6953, -0.159958, 1.77583, -0.808156, 2.04446, 3.58507, -1.27303, -0.0739294, 0.22885, -1.16883, -0.0437807, -1.30141, 2.71702, 2.85379, 3.74969, 3.5839, -0.159889, -0.236555, 2.78411, 2.15217, -0.945737, -1.90692, 0.536403, -1.08419, -3.75986, 2.65243, -2.29661, 3.8776, 1.23146, -2.26545, 2.79205, 2.34152, -3.62388, -3.51983, -0.152083, -0.77672, -0.0661756, -1.12531, 1.77691, -1.49266, -0.401453, -2.98782, 1.15182, 3.00211, -0.338523, 2.63385, -1.30166, -1.96304, -2.03665, -2.91373, 3.33512, 0.26508, -2.4008, -0.989122, -1.96516, 0.498154, -0.139963, 1.762, -0.36494, 2.42886, 1.26076, -0.344707, -2.2629, 3.01517, -0.192693, 1.72579, -3.09541, 0.898774, -3.33187, -2.09473, 2.13997, -1.20736, -1.78102, 0.661333, -2.15738, -2.82721, -0.34423, 0.945198, -1.3919, 2.24165, -1.72333, -3.61333, 0.177856, -0.499845, 1.08322, -0.57797, 1.32396, -0.580476, -0.990233, 3.13608, 0.2254, 2.44513, -1.43021, -2.20293, -0.0295935, 3.9359, 0.872028, 2.94495, 2.3334, -1.4539, -2.0155, 1.90474, -1.83284, -3.6983, -0.223583, -2.19197, 2.98892, 2.11877, -0.614374, 0.860207, 3.63726, -1.54793, 0.699044, -3.31199, -2.87789, 3.21311, -3.24507, -0.0689166, 0.225146, -2.84127, -3.67944, 0.763724, -3.93721, -3.81518, -1.06853, 0.726999, 0.562243, 3.79879, 3.75762, 2.1455, 2.00329, -0.400098, -1.80113, 3.49374, 3.26726, -1.24347, 2.0535, 2.55697, 0.670452, -2.79004, 1.39668, 2.32366, -2.27311, -0.352436, -2.71256, -2.31389, -2.11829, 0.111656, -1.67798, 2.97944, -3.7505, -1.88802, 3.50199, 1.31453, 3.32241, -1.04754, -3.03124, 1.60895, 1.15746, 2.29443, 3.31704, -0.172815, 2.81695, 0.253896, 0.298466, -3.90939, -2.39831, 3.46711, 2.41166, 2.03439, 0.387814, -3.40236, -3.71227, -1.68499, -3.81028, 2.97335, 3.32693, -3.88281, -2.61789, -3.31616, 2.71789, 3.05144, -0.579528, -0.672907, 2.75653);quartz(width=4, height=4, type="pdf", file="~/Desktop/testpdf.pdf");plot(x=x, y=y, xlim=c(-5, 5), ylim=c(-5, 5), pch=19, cex=0.5, main="2000");dev.off();}’

  If I execute the R code that is in the -e argument directly in R GUI (on OS X) it works fine.  And if I put that code in a file and run Rscript <file>, it works fine.  So the length limit is not intrinsic to R’s parser, it would seem.  But if I try to execute exactly the same code in an interactive R session in my Unix terminal's command line, I get a continuation prompt, +, and a little investigation indicates that the input line may have been truncated after 3843 characters (a strange number) and it is waiting for more input to follow that truncated input.  And – what is most relevant for my situation – if I try to run the full Rscript command as given above (inside /bin/sh), it prints out:

WARNING: '-e {x~+~<-~+~c(-1.31171,~+~-0.686165,~+~1.62771,~+~0.320195,~+~-0.322011,~+~1.66518,~+~-0.271971,~+~-0.665367,~+~0.516482,~+~-0.716343,~+~-0.317471,~+~0.068046,~+~-0.100371,~+~-1.15907,~+~0.263329,~+~-0.936049,~+~-0.852444,~+~0.358817,~+~-0.233959,~+~0.209891,~+~-0.831575,~+~-0.952987,~+~-0.0420206,~+~-1.78527,~+~-0.280584,~+~-0.62353,~+~1.42597,~+~0.127994,~+~0.0751232,~+~0.896835,~+~-0.319488,~+~0.897876,~+~0.18457,~+~0.779571,~+~-0.0543194,~+~0.226722,~+~-0.769983,~+~-0.723463,~+~0.144386,~+~-0.468544,~+~-0.349417,~+~0.336786,~+~0.749212,~+~-1.62397,~+~0.683075,~+~-0.746449,~+~0.300921,~+~-0.365468,~+~0.548271,~+~1.13169,~+~-1.34042,~+~-0.0740572,~+~1.34986,~+~0.531771,~+~-0.147157,~+~0.824894,~+~-1.05816,~+~1.58867,~+~-0.885764,~+~1.11912,~+~0.361512,~+~1.77985,~+~0.585099,~+~-1.205,~+~2.44134,~+~-0.331372,~+~-0.346322,~+~0.0535267,~+~-1.75089,~+~0.0773243,~+~-1.07846,~+~-1.29632,~+~1.0622,~+~1.34867,~+~0.199777,~+~0.197516,~+~0.574185,~+~1.06555,~+~-0.885166,~+~-0.788576,~+~-1.46061,~+~-1.5402

and then it hangs – the full warning doesn’t complete printing, so it is not clear what it is trying to warn about.  That represents 844 characters of input script, but with the weird way that spaces have been replaced by ~+~ by somebody, it is 1013 characters – suspiciously close to 1024.

  Note that if I simply make the R script shorter, by plotting 100 x/y values instead of 500, everything works fine.  So there is no issue with the way that I’m quoting strings or anything like that; the only issue seems to be the total length of the command line.

  Now of course I could break up the script into multiple chunks, passed via separate -e arguments, and perhaps that would work somewhat better.  But given that I want to set up a vector x with a single c() command containing all of the data for x, I will still hit a line length limit; the single line of code to set up x will already be over the maximum line length that Rscript allows for a -e argument, apparently.  Getting around that would obviously be possible too, but would be considerably more hassle.

  And incidentally, this seems to have nothing to do with the /bin/sh input line limit; that is much higher.  According to "getconf ARG_MAX”, it is 262144 characters on my machine, which is more than enough headroom for what I’m trying to do.

  So my questions are: (1) is this a bug, (2) if so, do you think you are likely to fix it any time soon :->, and (3) if the answer to that is no, are there any standard workarounds for this sort of situation that you would recommend?  I suppose I could write out the script to a file and then execute that file with Rscript, since that seems to work; but I was really hoping to avoid that extra complication and overhead.  Is there a better way?

  Thanks for any help you can provide!  :->

Cheers,
-B.

Benjamin C. Haller
Messer Lab
Cornell University



More information about the R-help mailing list