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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 4921 4922 4923 4924 4925 4926 4927 4928 4929 4930 4931 4932 4933 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202 5203 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5279 5280 5281 5282 5283 5284 5285 5286 5287 5288 5289 5290 5291 5292 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304 5305 5306 5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 5342 5343 5344 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 5367 5368 5369 5370 5371 5372 5373 5374 5375 5376 5377 5378 5379 5380 5381 5382 5383 5384 5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5397 5398 5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 5431 5432 5433 5434 5435 5436 5437 5438 5439 5440 5441 5442 5443 5444 5445 5446 5447 5448 5449 5450 5451 5452 5453 5454 5455 5456 5457 5458 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 5474 5475 5476 5477 5478 5479 5480 5481 5482 5483 5484 5485 5486 5487 5488 5489 5490 5491 5492 5493 5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 5509 5510 5511 5512 5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 5530 5531 5532 5533 5534 5535 5536 5537 5538 5539 5540 5541 5542 5543 5544 5545 5546 5547 5548 5549 5550 5551 5552 5553 5554 5555 5556 5557 5558 5559 5560 5561 5562 5563 5564 5565 5566 5567 5568 5569 5570 5571 5572 5573 5574 5575 5576 5577 5578 5579 5580 5581 5582 5583 5584 5585 5586 5587 5588 5589 5590 5591 5592 5593 5594 5595 5596 5597 5598 5599 5600 5601 5602 5603 5604 5605 5606 5607 5608 5609 5610 5611 5612 5613 5614 5615 5616 5617 5618 5619 5620 5621 5622
|
R News
CHANGES IN R VERSION 2.15.1:
NEW FEATURES:
o source() now uses withVisible() rather than
.Internal(eval.with.vis). This sometimes alters tracebacks
slightly.
o install.packages("pkg_version.tgz") on Mac OS X now has sanity
checks that this is actually a binary package (as people have
tried it with incorrectly named source packages).
o splineDesign() and spline.des() in package splines have a new
option sparse which can be used for efficient construction of a
sparse B-spline design matrix (_via_ Matrix).
o norm() now allows type = "2" (the 'spectral' or 2-norm) as well,
mainly for didactical completeness.
o pmin() and pmax()) now also work when one of the inputs is of
length zero and others are not, returning a zero-length vector,
analogously to, say, +.
o colorRamp() (and hence colorRampPalette()) now also works for the
boundary case of just one color when the ramp is flat.
o qqline() has new optional arguments distribution, probs and
qtype, following the example of lattice's panel.qqmathline().
o .C() gains some protection against the misuse of character vector
arguments. (An all too common error is to pass character(N),
which initializes the elements to "", and then attempt to edit
the strings in-place, sometimes forgetting to terminate them.)
o Calls to the new function globalVariables() in package utils
declare that functions and other objects in a package should be
treated as globally defined, so that CMD check will not note
them.
o print(packageDescription(*)) trims the Collate field by default.
o The included copy of zlib has been updated to version 1.2.7.
o A new option "show.error.locations" has been added. When set to
TRUE, error messages will contain the location of the most recent
call containing source reference information. (Other values are
supported as well; see ?options.)
o The NA warning messages from e.g. pchisq() now report the call to
the closure and not that of the .Internal.
o Added Polish translations by <c5><81>ukasz Daniel.
PERFORMANCE IMPROVEMENTS:
o In package parallel, makeForkCluster() and the multicore-based
functions use native byte-order for serialization (deferred from
2.15.0).
o lm.fit(), lm.wfit(), glm.fit() and lsfit() do less copying of
objects, mainly by using .Call() rather than .Fortran().
o .C() and .Fortran() do less copying: arguments which are raw,
logical, integer, real or complex vectors and are unnamed are not
copied before the call, and (named or not) are not copied after
the call. Lists are no longer copied (they are supposed to be
used read-only in the C code).
o tabulate() makes use of .C(DUP = FALSE) and hence does not copy
bin. (Suggested by Tim Hesterberg.) It also avoids making a
copy of a factor argument bin.
o Other functions (often or always) doing less copying include
cut(), dist(), the complex case of eigen(), hclust(), image(),
kmeans(), loess(), stl() and svd(LINPACK = TRUE).
o There is less copying when using primitive replacement functions
such as names(), attr() and attributes().
DEPRECATED AND DEFUNCT:
o The converters for use with .C() (see ?getCConverterDescriptions)
are deprecated: use the .Call() interface instead. There are no
known examples (they were never fully documented).
UTILITIES:
o For R CMD check, a few people have reported problems with
junctions on Windows (although they were tested on Windows 7, XP
and Server 2008 machines and it is unknown under what
circumstances the problems occur). Setting the environment
variable R_WIN_NO_JUNCTIONS to a non-empty value (e.g. in
~/.R/check.Renviron) will force copies to be used instead.
INSTALLATION:
o R CMD INSTALL with _R_CHECK_INSTALL_DEPENDS_ set to a true value
(as done by R CMD check --as-cran) now restricts the packages
available when lazy-loading as well as when test-loading (since
packages such as ETLUtils and agsemisc had top-level calls to
library() for undeclared packages).
This check is now also available on Windows.
C-LEVEL FACILITIES:
o C entry points mkChar and mkCharCE now check that the length of
the string they are passed does not exceed 2^31-1 bytes: they
used to overflow with unpredictable consequences.
o C entry points R_GetCurrentSrcref and R_GetSrcFilename have been
added to the API to allow debuggers access to the source
references on the stack.
WINDOWS-SPECIFIC CHANGES:
o Windows-specific changes will now be announced in this file
(NEWS). Changes up and including R 2.15.0 remain in the CHANGES
file.
o There are two new environment variables which control the
defaults for command-line options.
If R_WIN_INTERNET2 is set to a non-empty value, it is as if
--internet2 was used.
If R_MAX_MEM_SIZE is set, it gives the default memory limit if
--max-mem-size is not specified: invalid values being ignored.
BUG FIXES:
o lsfit() lost the names from the residuals.
o More cases in which merge() could create a data frame with
duplicate column names now give warnings. Cases where names
specified in by match multiple columns are errors.
o Nonsense uses such as seq(1:50, by = 5) (from package plotrix)
and seq.int(1:50, by = 5) are now errors.
o The residuals in the 5-number summary printed by summary() on an
"lm" object are now explicitly labelled as weighted residuals
when non-constant weights are present. (Wish of PR#14840.)
o tracemem() reported that all objects were copied by .C() or
.Fortran() whereas only some object types were ever copied.
It also reported and marked as copies _some_ transformations such
as rexp(n, x): it no longer does so.
o The plot() method for class "stepfun" only used the optional xval
argument to compute xlim and not the points at which to plot (as
documented). (PR#14864)
o Names containing characters which need to be escaped were not
deparsed properly. (PR#14846)
o Trying to update (recommended) packages in R_HOME/library without
write access is now dealt with more gracefully. Further, such
package updates may be skipped (with a warning), when a newer
installed version is already going to be used from .libPaths().
(PR#14866)
o hclust() is now fast again (as up to end of 2003), with a
different fix for the "median"/"centroid" problem. (PR#4195).
o get_all_vars() failed when the data came entirely from vectors in
the global environment. (PR#14847)
o R CMD check with _R_CHECK_NO_RECOMMENDED_ set to a true value (as
done by the --as-cran option) could issue false errors if there
was an indirect dependency on a recommended package.
o formatC() uses the C entry point str_signif which could write
beyond the length allocated for the output string.
o Missing default argument added to implicit S4 generic for
backsolve(). (PR#14883)
o Some bugs have been fixed in handling load actions that could
fail to export assigned items or generate spurious warnings in
CMD check on loading.
o For tiff(type = "windows"), the numbering of per-page files
except the last was off by one.
o On Windows, loading package stats (which is done for a default
session) would switch line endings on stdout and stderr from CRLF
to LF. This affected Rterm and R CMD BATCH.
o On Windows, the compatibility function x11() had not kept up with
changes to windows(), and issued warnings about bad parameters.
(PR#14880)
o On Windows, the Sys.glob() function did not handle UNC paths as
it was designed to try to do. (PR#14884)
o In package parallel, clusterApply() and similar failed to handle
a (pretty pointless) length-1 argument. (PR#14898)
o Quartz Cocoa display reacted asynchronously to dev.flush() which
means that the redraw could be performed after the plot has been
already modified by subsequent code. The redraw is now done
synchronously in dev.flush() to allow animations without sleep
cycles.
o Source locations reported in traceback() were incorrect when
byte-compiled code was on the stack.
o plogis(x, lower = FALSE, log.p = TRUE) no longer underflows early
for large x (e.g. 800).
o ?Arithmetic's "1 ^ y and y ^ 0 are 1, _always_" now also applies
for integer vectors y.
o X11-based pixmap devices like png(type = "Xlib") were trying to
set the cursor style, which triggered some warnings and hangs.
o Code executed by the built-in HTTP server no longer allows other
HTTP clients to re-enter R until the current worker evaluation
finishes, to prevent cascades.
o The plot() and Axis() methods for class "table" now respect
graphical parameters such as cex.axis. (Reported by Martin
Becker.)
o Under some circumstances package.skeleton() would give out
progress reports that could not be translated and so were
displayed by question marks. Now they are always in English.
(This was seen for CJK locales on Windows, but may have occurred
elsewhere.)
o The evaluator now keeps track of source references outside of
functions, e.g. when source() executes a script.
o The replacement method for window() now works correctly for
multiple time series of class "mts". (PR#14925)
o is.unsorted() gave incorrect results on non-atomic objects such
as data frames. (Reported by Matthew Dowle.)
o The value returned by tools::psnice() for invalid pid values was
not always NA as documented.
o Closing an X11() window while locator() was active could abort
the R process.
o getMethod(f, sig) produced an incorrect error message in some
cases when f was not a string).
o Using a string as a "call" in an error condition with
options(showErrorCalls=TRUE) could cause a segfault. (PR#14931)
o The string "infinity" allowed by C99 was not accepted as a
numerical string value by e.g. scan() and as.character().
(PR#14933)
o In legend(), setting some entries of lwd to NA was inconsistent
(depending on the graphics device) in whether it would suppress
those lines; now it consistently does so. (PR#14926)
o by() failed for a zero-row data frame. (Reported by Weiqiang
Qian)
o Yates correction in chisq.test() could be bigger than the terms
it corrected, previously leading to an infinite test statistic in
some corner cases which are now reported as NaN.
o xgettext() and related functions sometimes returned items that
were not strings for translation. (PR#14935)
o plot(<lm>, which=5) now correctly labels the factor level
combinations for the special case where all h[i,i] are the same.
(PR#14837)
CHANGES IN R VERSION 2.15.0:
SIGNIFICANT USER-VISIBLE CHANGES:
o The behaviour of unlink(recursive = TRUE) for a symbolic link to
a directory has changed: it now removes the link rather than the
directory contents (just as rm -r does).
On Windows it no longer follows reparse points (including
junctions and symbolic links).
NEW FEATURES:
o Environment variable RD2DVI_INPUTENC has been renamed to
RD2PDF_INPUTENC.
o .Deprecated() becomes a bit more flexible, getting an old
argument.
o Even data-only packages without R code need a namespace and so
may need to be installed under R 2.14.0 or later.
o assignInNamespace() has further restrictions on use apart from at
top-level, as its help page has warned. Expect it to be disabled
from programmatic use in the future.
o system() and system2() when capturing output report a non-zero
status in the new "status" attribute.
o kronecker() now has an S4 generic in package methods on which
packages can set methods. It will be invoked by X %x% Y if
either X or Y is an S4 object.
o pdf() accepts forms like file = "|lpr" in the same way as
postscript().
o pdf() accepts file = NULL. This means that the device does NOT
create a PDF file (but it can still be queried, e.g., for font
metric info).
o format() (and hence print()) on "bibentry" objects now uses
options("width") to set the output width.
o legend() gains a text.font argument. (Suggested by Tim Paine,
PR#14719.)
o nchar() and nzchar() no longer accept factors (as integer
vectors). (Wish of PR#6899.)
o summary() behaves slightly differently (or more precisely, its
print() method does). For numeric inputs, the number of NAs is
printed as an integer and not a real. For dates and datetimes,
the number of NAs is included in the printed output (the latter
being the wish of PR#14720).
The "data.frame" method is more consistent with the default
method: in particular it now applies zapsmall() to
numeric/complex summaries.
o The number of items retained with options(warn = 0) can be set by
options(nwarnings=).
o There is a new function assignInMyNamespace() which uses the
namespace of the function it is called from.
o attach() allows the default name for an attached file to be
overridden.
o bxp(), the work horse of boxplot(), now uses a more sensible
default xlim in the case where at is specified differently from
1:n, see the discussion on R-devel, <URL:
https://stat.ethz.ch/pipermail/r-devel/2011-November/062586.html>.
o New function paste0(), an efficient version of paste(*, sep=""),
to be used in many places for more concise (and slightly more
efficient) code.
o Function setClass() in package methods now returns, invisibly, a
generator function for the new class, slightly preferred to
calling new(), as explained on the setClass help page.
o The "dendrogram" method of str() now takes its default for
last.str from option str.dendrogram.last.
o New simple fitted() method for "kmeans" objects.
o The traceback() function can now be called with an integer
argument, to display a current stack trace. (Wish of PR#14770.)
o setGeneric() calls can be simplified when creating a new generic
function by supplying the default method as the def argument.
See ?setGeneric.
o serialize() has a new option xdr = FALSE which will use the
native byte-order for binary serializations. In scenarios where
only little-endian machines are involved (these days, close to
universal) and (un)serialization takes an appreciable amount of
time this may speed up noticeably transferring data between
systems.
o The internal (un)serialization code is faster for long vectors,
particularly with XDR on some platforms. (Based on a suggested
patch by Michael Spiegel.)
o For consistency, circles with zero radius are omitted by points()
and grid.circle(). Previously this was device-dependent, but
they were usually invisible.
o NROW(x) and NCOL(x) now work whenever dim(x) looks appropriate,
e.g., also for more generalized matrices.
o PCRE has been updated to version 8.30.
o The internal R_Srcref variable is now updated before the browser
stops on entering a function. (Suggestion of PR#14818.)
o There are 'bare-bones' functions .colSums(), .rowSums(),
.colMeans() and .rowMeans() for use in programming where ultimate
speed is required.
o The formerly internal function .package_dependencies() from
package tools for calculating (recursive) (reverse) dependencies
on package databases has been renamed to package_dependencies()
and is now exported.
o There is a new function optimHess() to compute the (approximate)
Hessian for an optim() solution if hessian = TRUE was forgotten.
o .filled.contour() is a 'bare-bones' function to add a
filled-contour rectangular plot to an already prepared plot
region.
o The stepping in debugging and single-step browsing modes has
changed slightly: now left braces at the start of the body are
stepped over for if statements as well as for for and while
statements. (Wish of PR#14814.)
o library() no longer warns about a conflict with a function from
package:base if the function has the same code as the base one
but with a different environment. (An example is Matrix::det().)
o When deparsing very large language objects, as.character() now
inserts newlines after each line of approximately 500 bytes,
rather than truncating to the first line.
o New function rWishart() generates Wishart-distributed random
matrices.
o Packages may now specify actions to be taken when the package is
loaded (setLoadActions()).
o options(max.print = Inf) and similar now give an error (instead
of warnings later).
o The "difftime" replacement method of units tries harder to
preserve other attributes of the argument. (Wish of PR#14839.)
o poly(raw = TRUE) no longer requires more unique points than the
degree. (Requested by John Fox.)
PACKAGE parallel:
o There is a new function mcmapply(), a parallel version of
mapply(), and a wrapper mcMap(), a parallel version of Map().
o A default cluster can be registered by the new function
setDefaultCluster(): this will be used by default in functions
such as parLapply().
o clusterMap() has a new argument .scheduling to allow the use of
load-balancing.
o There are new load-balancing functions parLapplyLB() and
parSapplyLB().
o makePSOCKCluster() has a new option useXDR = FALSE which can be
used to avoid byte-shuffling for serialization when all the nodes
are known to be little-endian (or all big-endian).
PACKAGE INSTALLATION:
o Non-ASCII vignettes without a declared encoding are no longer
accepted.
o C/C++ code in packages is now compiled with -NDEBUG to mitigate
against the C/C++ function assert being called in production use.
Developers can turn this off during package development with
PKG_CPPFLAGS = -UNDEBUG.
o R CMD INSTALL has a new option --dsym which on Mac OS X (Darwin)
dumps the symbols alongside the .so file: this is helpful when
debugging with valgrind (and especially when installing packages
into R.framework). [This can also be enabled by setting the
undocumented environment variable PKG_MAKE_DSYM, since R 2.12.0.]
o R CMD INSTALL will test loading under all installed
sub-architectures even for packages without compiled code, unless
the flag --no-multiarch is used. (Pure R packages can do things
which are architecture-dependent: in the case which prompted
this, looking for an icon in a Windows R executable.)
o There is a new option install.packages(type = "both") which tries
source packages if binary packages are not available, on those
platforms where the latter is the default.
o The meaning of install.packages(dependencies = TRUE) has changed:
it now means to install the essential dependencies of the named
packages plus the Suggests, but only the essential dependencies
of dependencies. To get the previous behaviour, specify
dependencies as a character vector.
o R CMD INSTALL --merge-multiarch is now supported on OS X and
other Unix-alikes using multiple sub-architectures.
o R CMD INSTALL --libs-only now by default does a test load on
Unix-alikes as well as on Windows: suppress with --no-test-load.
UTILITIES:
o R CMD check now gives a warning rather than a note if it finds
inefficiently compressed datasets. With bzip2 and xz compression
having been available since R 2.10.0, it only exceptionally makes
sense to not use them.
The environment variable _R_CHECK_COMPACT_DATA2_ is no longer
consulted: the check is always done if _R_CHECK_COMPACT_DATA_ has
a true value (its default).
o Where multiple sub-architectures are to be tested, R CMD check
now runs the examples and tests for all the sub-architectures
even if one fails.
o R CMD check can optionally report timings on various parts of the
check: this is controlled by environment variable
_R_CHECK_TIMINGS_ documented in 'Writing R Extensions'. Timings
(in the style of R CMD BATCH) are given at the foot of the output
files from running each test and the R code in each vignette.
o There are new options for more rigorous testing by R CMD check
selected by environment variables - see the 'Writing R
Extensions' manual.
o R CMD check now warns (rather than notes) on undeclared use of
other packages in examples and tests: increasingly people are
using the metadata in the DESCRIPTION file to compute information
about packages, for example reverse dependencies.
o The defaults for some of the options in R CMD check (described in
the 'R Internals' manual) have changed: checks for unsafe and
.Internal() calls and for partial matching of arguments in R
function calls are now done by default.
o R CMD check has more comprehensive facilities for checking
compiled code and so gives fewer reports on entry points linked
into .so/.dll files from libraries (including C++ and Fortran
runtimes).
Checking compiled code is now done on FreeBSD (as well as the
existing supported platforms of Linux, Mac OS X, Solaris and
Windows).
o R CMD build has more options for --compact-vignettes: see R CMD
build --help.
o R CMD build has a new option --md5 to add an MD5 file (as done by
CRAN): this is used by R CMD INSTALL to check the integrity of
the distribution.
If this option is not specified, any existing (and probably
stale) MD5 file is removed.
DEPRECATED AND DEFUNCT:
o R CMD Rd2dvi is now defunct: use R CMD Rd2pdf.
o Options such --max-nsize, --max-vsize and the function
mem.limits() are now defunct. (Options --min-nsize and
--min-vsize remain available.)
o Use of library.dynam() without specifying all the first three
arguments is now disallowed.
Use of an argument chname in library.dynam() including the
extension .so or .dll (which was never allowed according to the
help page) is defunct. This also applies to
library.dynam.unload() and to useDynLib directives in NAMESPACE
files.
o The internal functions .readRDS() and .saveRDS() are now defunct.
o The off-line help() types "postscript" and "ps" are defunct.
o Sys.putenv(), replaced and deprecated in R 2.5.0, is finally
removed.
o Some functions/objects which have been defunct for five or more
years have been removed completely. These include .Alias(),
La.chol(), La.chol2inv(), La.eigen(), Machine(), Platform(),
Version, codes(), delay(), format.char(), getenv(), httpclient(),
loadURL(), machine(), parse.dcf(), printNoClass(), provide(),
read.table.url(), restart(), scan.url(), symbol.C(), symbol.For()
and unix().
o The ENCODING argument to .C() is deprecated. It was intended to
smooth the transition to multi-byte character strings, but can be
replaced by the use of iconv() in the rare cases where it is
still needed.
INSTALLATION:
o Building with a positive value of --with-valgrind-instrumentation
now also instruments logical, complex and raw vectors.
C-LEVEL FACILITIES:
o Passing R objects other than atomic vectors, functions, lists and
environments to .C() is now deprecated and will give a warning.
Most cases (especially NULL) are actually coding errors. NULL
will be disallowed in future.
.C() now passes a pairlist as a SEXP to the compiled code. This
is as was documented, but pairlists were in reality handled
differently as a legacy from the early days of R.
o call_R and call_S are deprecated. They still exist in the
headers and as entry points, but are no longer documented and
should not be used for new code.
BUG FIXES:
o str(x, width) now obeys its width argument also for function
headers and other objects x where deparse() is applied.
o The convention for x %/% 0L for integer-mode x has been changed
from 0L to NA_integer_. (PR#14754)
o The exportMethods directive in a NAMESPACE file now exports S4
generics as necessary, as the extensions manual said it does.
The manual has also been updated to be a little more informative
on this point.
It is now required that there is an S4 generic (imported or
created in the package) when methods are to be exported.
o Reference methods cannot safely use non-exported entries in the
namespace. We now do not do so, and warn in the documentation.
o The namespace import code was warning when identical S4 generic
functions were imported more than once, but should not (reported
by Brian Ripley, then Martin Morgan).
o merge() is no longer allowed (in some ways) to create a data
frame with duplicate column names (which confused PR#14786).
o Fixes for rendering raster images on X11 and Windows devices when
the x-axis or y-axis scale is reversed.
o getAnywhere() found S3 methods as seen from the utils namespace
and not from the environment from which it was called.
o selectMethod(f, sig) would not return inherited group methods
when caching was off (as it is by default).
o dev.copy2pdf(out.type = "cairo") gave an error. (PR#14827)
o Virtual classes (e.g., class unions) had a NULL prototype even if
that was not a legal subclass. See ?setClassUnion.
o The C prototypes for zdotc and zdotu in R_ext/BLAS.h have been
changed to the more modern style rather than that used by f2c.
(Patch by Berwin Turlach.)
o isGeneric() produced an error for primitives that can not have
methods.
o .C() or .Fortran() had a lack-of-protection error if the
registration information resulted in an argument being coerced to
another type.
o boxplot(x=x, at=at) with non finite elements in x and non integer
at could not generate a warning but failed.
o heatmap(x, symm=TRUE, RowSideColors=*) no longer draws the colors
in reversed order.
o predict(<ar>) was incorrect in the multivariate case, for p >= 2.
o print(x, max=m) is now consistent when x is a "Date"; also the
"reached ... max.print .." messages are now consistently using
single brackets.
o Closed the <li> tag in pages generated by Rd2HTML(). (PR#14841.)
o Axis tick marks could go out of range when a log scale was used.
(PR#14833.)
o Signature objects in methods were not allocated as S4 objects
(caused a problem with trace() reported by Martin Morgan).
CHANGES IN R VERSION 2.14.2:
NEW FEATURES:
o The internal untar() (as used by default by R CMD INSTALL) now
knows about some pax headers which bsdtar (e.g., the default tar
for Mac OS >= 10.6) can incorrectly include in tar files, and
will skip them with a warning.
o PCRE has been upgraded to version 8.21: as well as bug fixes and
greater Perl compatibility, this adds a JIT pattern compiler,
about which PCRE's news says 'large performance benefits can be
had in many situations'. This is supported on most but not all R
platforms.
o Function compactPDF() in package tools now takes the default for
argument gs_quality from environment variable GS_QUALITY: there
is a new value "none", the ultimate default, which prevents
GhostScript being used in preference to qpdf just because
environment variable R_GSCMD is set. If R_GSCMD is unset or set
to "", the function will try to find a suitable GhostScript
executable.
o The included version of zlib has been updated to 1.2.6.
o For consistency with the logLik() method, nobs() for "nls" files
now excludes observations with zero weight. (Reported by Berwin
Turlach.)
UTILITIES:
o R CMD check now reports by default on licenses not according to
the description in 'Writing R Extensions'.
o R CMD check has a new option --as-cran to turn on most of the
customizations that CRAN uses for its incoming checks.
PACKAGE INSTALLATION:
o R CMD INSTALL will now no longer install certain file types from
inst/doc: these are almost certainly mistakes and for some
packages are wasting a lot of space. These are Makefile, files
generated by running LaTeX, and unless the package uses a
vignettes directory, PostScript and image bitmap files.
Note that only PDF vignettes have ever been supported: some of
these files come from DVI/PS output from the Sweave defaults
prior to R 2.13.0.
BUG FIXES:
o R configured with --disable-openmp would mistakenly set
HAVE_OPENMP (internal) and SUPPORT_OPENMP (in Rconfig.h) even
though no OpenMP flags were populated.
o The getS3method() implementation had an old computation to find
an S4 default method.
o readLines() could overflow a buffer if the last line of the file
was not terminated. (PR#14766)
o R CMD check could miss undocumented S4 objects in packages which
used S4 classes but did not Depends: methods in their DESCRIPTION
file.
o The HTML Help Search page had malformed links. (PR#14769)
o A couple of instances of lack of protection of SEXPs have been
squashed. (PR#14772, PR#14773)
o image(x, useRaster=TRUE) misbehaved on single-column x.
(PR#14774)
o Negative values for options("max.print") or the max argument to
print.default() caused crashes. Now the former are ignored and
the latter trigger an error. (PR#14779)
o The text of a function body containing more than 4096 bytes was
not properly saved by the parser when entered at the console.
o Forgetting the #endif tag in an Rd file could cause the parser to
go into a loop. (Reported by Hans-Jorg Bibiko.)
o str(*, ....., strict.width="cut") now also obeys list.len = n.
(Reported by S"oren Vogel.)
o Printing of arrays did not have enough protection (C level),
e.g., in the context of capture.output(). (Reported by Herv'e
Pag`es and Martin Morgan.)
o pdf(file = NULL) would produce a spurious file named NA.
(PR#14808)
o list2env() did not check the type of its envir argument.
(PR#14807)
o svg() could segfault if called with a non-existent file path.
(PR#14790)
o make install can install to a path containing + characters.
(PR#14798)
o The edit() function did not respect the options("keep.source")
setting. (Reported by Cleridy Lennert.)
o predict.lm(*, type="terms", terms=*, se.fit=TRUE) did not work.
(PR#14817)
o There is a partial workaround for errors in the TRE
regular-expressions engine with named classes and repeat counts
of at least 2 in a MBCS locale (PR#14408): these are avoided when
TRE is in 8-bit mode (e.g. for useBytes = TRUE and when all the
data are ASCII).
o The C function R_ReplDLLdo1() did not call top-level handlers.
o The Quartz device was unable to detect window sessions on Mac OS
X 10.7 (Lion) and higher and thus it was not used as the default
device on the console. Since Lion any application can use window
sessions, so Quartz will now be the default device if the user's
window session is active and R is not run via ssh which is at
least close to the behavior in prior OS X versions.
o mclapply() would fail in code assembling the translated error
message if some (but not all) cores encountered an error.
o format.POSIXlt(x) raised an arithmetic exception when x was an
invalid object of class "POSIXlt" and parts were empty.
o installed.packages() has some more protection against package
installs going on in parallel.
o .Primitive() could be mis-used to call .Internal() entry points.
CHANGES IN R VERSION 2.14.1:
NEW FEATURES:
o parallel::detectCores() is now able to find the number of
physical cores (rather than CPUs) on Sparc Solaris.
It can also do so on most versions of Windows; however the
default remains detectCores(logical = TRUE) on that platform.
o Reference classes now keep a record of which fields are locked.
$lock() with no arguments returns the names of the locked fields.
o HoltWinters() reports a warning rather than an error for some
optimization failures (where the answer might be a reasonable
one).
o tools::dependsOnPkg() now accepts the shorthand dependencies =
"all".
o parallel::clusterExport() now allows specification of an
environment from which to export.
o The quartz() device now does tilde expansion on its file
argument.
o tempfile() on a Unix-alike now takes the process ID into account.
This is needed with multicore (and as part of parallel) because
the parent and all the children share a session temporary
directory, and they can share the C random number stream used to
produce the unique part. Further, two children can call
tempfile() simultaneously.
o Option print in Sweave's RweaveLatex() driver now emulates
auto-printing rather than printing (which can differ for an S4
object by calling show() rather than print()).
o filled.contour() now accepts infinite values: previously it might
have generated invalid graphics files (e.g. containing NaN
values).
INSTALLATION:
o On 64-bit Linux systems, configure now only sets LIBnn to lib64
if /usr/lib64 exists. This may obviate setting LIBnn explicitly
on Debian-derived systems.
It is still necessary to set LIBnn = lib (or lib32) for 32-bit
builds of R on a 64-bit OS on those Linux distributions capable
for supporting that concept.
o configure looks for inconsolata.sty, and if not found adjusts the
default R_RD4PDF to not use it (with a warning, since it is
needed for high-quality rendering of manuals).
PACKAGE INSTALLATION:
o R CMD INSTALL will now do a test load for all sub-architectures
for which code was compiled (rather than just the primary
sub-architecture).
UTILITIES:
o When checking examples under more than one sub-architecture, R
CMD check now uses a separate directory examples_arch for each
sub-architecture, and leaves the output in file
pkgname-Ex_arch.Rout. Some packages expect their examples to be
run in a clean directory ....
BUG FIXES:
o stack() now gives an error if no vector column is selected,
rather than returning a 1-column data frame (contrary to its
documentation).
o summary.mlm() did not handle objects where the formula had been
specified by an expression. (Reported by Helios de Rosario
Martinez).
o tools::deparseLatex(dropBraces=TRUE) could drop text as well as
braces.
o colormodel = "grey" (new in R 2.14.0)) did not always work in
postscript() and pdf().
o file.append() could return TRUE for failures. (PR#14727)
o gzcon() connections are no longer subject to garbage collection:
it was possible for this to happen when unintended (e.g. when
calling load()).
o nobs() does not count zero-weight observations for glm() fits,
for consistency with lm(). This affects the BIC() values
reported for such glm() fits. (Spotted by Bill Dunlap.)
o options(warn = 0) failed to end a (C-level) context with more
than 50 accumulated warnings. (Spotted by Jeffrey Horner.)
o The internal plot.default() code did not do sanity checks on a
cex argument, so invalid input could cause problems. (Reported
by Ben Bolker.)
o anyDuplicated(<array>, MARGIN=0) no longer fails. (Reported by
Herv'e Pag`es.)
o read.dcf() removes trailing blanks: unfortunately on some
platforms this included \xa0 (non-breaking space) which is the
trailing byte of a UTF-8 character. It now only considers ASCII
space and tab to be 'blank'.
o There was a sign error in part of the calculations for the
variance returned by KalmanSmooth(). (PR#14738)
o pbinom(10, 1e6, 0.01, log.p = TRUE) was NaN thanks to the buggy
fix to PR#14320 in R 2.11.0. (PR#14739)
o RweaveLatex() now emulates auto-printing rather than printing, by
calling methods::show() when auto-printing would.
o duplicated() ignored fromLast for a one-column data frame.
(PR#14742)
o source() and related functions did not put the correct timestamp
on the source references; srcfilecopy() has gained a new argument
timestamp to support this fix. (PR#14750)
o srcfilecopy() has gained a new argument isFile and now records
the working directory, to allow debuggers to find the original
source file. (PR#14826)
o LaTeX conversion of Rd files did not correctly handle
preformatted backslashes. (PR#14751)
o HTML conversion of Rd files did not handle markup within tabular
cells properly. (PR#14708)
o source() on an empty file with keep.source = TRUE tried to read
from stdin(), in R 2.14.0 only. (PR#14753)
o The code to check Rd files in packages would abort if duplicate
description sections were present.
CHANGES IN R VERSION 2.14.0:
SIGNIFICANT USER-VISIBLE CHANGES:
o All packages must have a namespace, and one is created on
installation if not supplied in the sources. This means that any
package without a namespace must be re-installed under this
version of R (but previously-installed data-only packages without
R code can still be used).
o The yLineBias of the X11() and windows() families of devices has
been changed from 0.1 to 0.2: this changes slightly the vertical
positioning of text in the margins (including axis annotations).
This is mainly for consistency with other devices such as
quartz() and pdf(). (Wish of PR#14538.)
There is a new graphics parameter "ylbias" which allows the
y-line bias of the graphics device to be tweaked, including to
reproduce output from earlier versions of R.
o Labeling of the p-values in various anova tables has been
rationalized to be either "Pr(>F)" or "Pr(>Chi)" (i.e. the
"Pr(F)", "Pr(Chi)" and "P(>|Chi|)" variants have been
eliminated). Code which extracts the p value _via_ indexing by
name may need adjustment.
o :: can now be used for datasets made available for lazy-loading
in packages with namespaces (which makes it consistent with its
use for data-only packages without namespaces in earlier versions
of R).
o There is a new package parallel.
It incorporates (slightly revised) copies of packages multicore
and snow (excluding MPI, PVM and NWS clusters). Code written to
use the higher-level API functions in those packages should work
unchanged (apart from changing any references to their namespaces
to a reference to parallel, and links explicitly to multicore or
snow on help pages).
It also contains support for multiple RNG streams following
L'Ecuyer _et al_ (2002), with support for both mclapply and snow
clusters. This replaces functions like clusterSetupRNG() from
snow (which are not in parallel).
The version released for R 2.14.0 contains base functionality:
higher-level convenience functions are planned (and some are
already available in the 'R-devel' version of R).
o Building PDF manuals (for R itself or packages, e.g. _via_ R CMD
check) by default requires the LaTeX package inconsolata: see the
section on 'Making the manuals' in the 'R Installation and
Administration Manual'.
o axTicks(*, log=TRUE) has changed in some cases to satisfy the
documented behavior and be consistent.
NEW FEATURES:
o txtProgressBar() can write to an open connection instead of the
console.
o Non-portable package names ending in . are no longer allowed.
Nor are single-character package names (R was already
disallowed).
o regexpr() and gregexpr() with perl = TRUE allows Python-style
named captures. (Wish and contribution of PR#14518.)
o The placement of 'plotmath' text in the margins of plots done by
base graphics now makes the same vertical adjustment as ordinary
text, so using ordinary and plotmath text on the same margin line
will seem better aligned (but not exactly aligned, since ordinary
text has descenders below the baseline and plotmath places them
on the baseline). (Related to PR#14537.)
o sunflowerplot() now has a formula interface. (Wish of PR#14541.)
o iconv() has a new argument toRaw to handle encodings such as
UTF-16 with embedded nuls (as was possible before the CHARSXP
cache was introduced).
It will also accept as input the type of list generated with
toRaw = TRUE.
o Garbage-collecting an unused input text connection no longer
gives a warning (since it 'connects' to nothing outside R).
o read.table() and scan() have gained a text argument, to allow
reading data from a (possibly literal) character string.
o optim(*, method = .) now allows method = "Brent" as an interface
to optimize(), for use in cases such as mle() where optim() is
used internally.
o mosaicplot() gains a border argument. (Wish of PR#14550.)
o smooth.spline() gains a tol argument which controls how different
x values need to be to be treated as distinct. The default has
been changed to be more reliable for inputs whose range is small
compared to their maximum absolute value. (Wish of PR#14452.)
o gl() runs faster by avoiding calling factor().
o The print() method for object.size() accepts B as well as b as an
abbreviation for 'bytes'.
o unlink() gains a force argument to work like rm -f and if
possible override restrictive permissions.
o pbirthday() and qbirthday() now use exact calculations for
coincident = 2.
o unzip() and unz() connections have been updated with support for
more recent Zip64 features (including large file sizes and bzip2
compression, but not UTF-8 file names).
unzip() has a new option to restore file times from those
recorded (in an unknown timezone) in the zip file.
o update.packages() now accepts a character vector of package names
for the oldPkgs argument. (Suggestion of Tal Galili.)
o The special reference class fields .self and .refClassDef are now
read-only to prevent corrupting the object.
o decompose() now returns the original series as part of its value,
so it can be used (rather than reconstructed) when plotting.
(Suggestion of Rob Hyndman.)
o Rao's efficient score test has been implemented for glm objects.
Specifically, the add1, drop1, and anova methods now allow test =
"Rao".
o If a saved workspace (e.g. .RData) contains objects that cannot
be loaded, R will now start with an warning message and an empty
workspace, rather than failing to start.
o strptime() now accepts times such as 24:00 for midnight at the
end of the day, for although these are disallowed by POSIX
1003.1-2008, ISO 8601:2004 allows them.
o Assignment of names() to S4 objects now checks for a
corresponding "names" slot, and generates a warning or an error
if that slot is not defined. See the section on slots in
?Classes.
o The default methods for is.finite(), is.infinite() and is.nan()
now signal an error if their argument is not an atomic vector.
o The formula method for plot() no longer places package stats on
the search path (it loads the namespace instead).
o There now is a genuine "function" method for plot() rather than
the generic dispatching internally to graphics::plot.function().
It is now exported, so can be called directly as plot.function().
o The one-sided ks.test() allows exact = TRUE to be specified in
the presence of ties (but the approximate calculation remains the
default: the 'exact' computation makes assumptions known to be
invalid in the presence of ties).
o The behaviour of curve(add = FALSE) has changed: it now no longer
takes the default x limits from the previous plot (if any):
rather they default to c(0, 1) just as the "function" method for
plot(). To get the previous behaviour use curve(add = NA), which
also takes the default for log-scaling of the x-axis from the
previous plot.
o Both curve() and the plot() method for functions have a new
argument xname to facilitate plots such as sin(t) _vs_ t.
o The local argument to source() can specify an environment as well
as TRUE (parent.env()) and FALSE (.GlobalEnv). It gives better
error messages for other values, such as NA.
o vcov() gains methods for classes "summary.lm" and "summary.glm".
o The plot() method for class "profile.nls" gains ylab and lty
arguments, and passes ... on to plot.default.
o Character-string arguments such as the mode argument of vector(),
as.vector() and is.vector() and the description argument of
file() are required to be of length exactly one, rather than any
further elements being silently discarded. This helps catch
incorrect usage in programming.
o The length argument of vector() and its wrappers such as
numeric() is required to be of length exactly one (other values
are now an error rather than giving a warning as previously).
o vector(len) and length(x) <- len no longer accept TRUE/FALSE for
len (not that they were ever documented to, but there was
special-casing in the C code).
o There is a new function Sys.setFileTime() to set the time of a
file (including a directory). See its help for exactly which
times it sets on various OSes.
o The file times reported by file.info() are reported to sub-second
resolution on systems which support it. (Currently the POSIX
2008 and FreeBSD/Darwin/NetBSD methods are detected.)
o New function getCall(m) as an abstraction for m$call, enabling
update()'s default method to apply more universally. (NB: this
can be masked by existing functions in packages.)
o Sys.info() gains a euser component to report the 'effective' user
on OSes which have that concept.
o The result returned by try() now contains the original error
condition object as the "condition" attribute.
o All packages with R code are lazy-loaded irrespective of the
LazyLoad field in the DESCRIPTION file. A warning is given if
the LazyLoad field is overridden.
o Rd markup has a new \figure tag so that figures can be included
in help pages when converted to HTML or LaTeX. There are
examples on the help pages for par() and points().
o The built-in httpd server now allows access to files in the
session temporary directory tempdir(), addressed as the /session
directory on the httpd server.
o Development versions of R are no longer referred to by the number
under which they might be released, e.g. in the startup banner, R
--version and sessionUtils(). The correct way to refer to a
development version of R is 'R-devel', preferably with the date
and SVN version number.
E.g. R-devel (2011-07-04 r56266)
o There is a new function texi2pdf() in package tools, currently a
convenience wrapper for texi2dvi(pdf = TRUE).
o There are two new options for typesetting PDF manuals from Rd
files. These are beramono and inconsolata, and used the named
font for monospaced output. They are intended to be used in
combination with times, and times,inconsolata,hyper is now the
default for the reference manual and package manuals. If you do
not have that font installed, you can set R_RD4PF to one of the
other options: see the 'R Installation and Administration
Manual'.
o Automatic printing for reference classes is now done by the
$show() method. A method is defined for class envRefClass and
may be overridden for user classes (see the ?ReferenceClasses
example). S4 show() methods should no longer be needed for
reference classes.
o tools::Rdiff (by default) and R CMD Rdiff now ignore differences
in pointer values when comparing printed environments, compiled
byte code, etc.
o The "source" attribute on functions created with keep.source=TRUE
has been replaced with a "srcref" attribute. The "srcref"
attribute references an in-memory copy of the source file using
the "srcfilecopy" class or the new "srcfilealias" class.
*NB:* This means that functions sourced with keep.source = TRUE
and saved (e.g., by save() or readRDS()) in earlier versions of R
will no longer show the original sources (including comments).
o New items User Manuals and Technical Papers have been added to
the HTML help main page. These link to vignettes in the base and
recommended packages and to a collection of papers about R
issues, respectively.
o Documentation and messages have been standardized to use
"namespace" rather than "name space".
o setGeneric() now looks in the default packages for a non-generic
version of a function if called from a package with a namespace.
(It always did for packages without a namespace.)
o Setting the environment variable _R_WARN_ON_LOCKED_BINDINGS_ will
give a warning if an attempt is made to change a locked binding.
o \SweaveInput is now supported when generating concordances in
Sweave().
o findLineNum() and setBreakpoint() now allow the environment to be
specified indirectly; the latter gains a clear argument to allow
it to call untrace().
o The body of a closure can be one of further types of R objects,
including environments and external pointers.
o The Rd2HTML() function in package tools now has a stylesheet
argument, allowing pages to be displayed in alternate formats.
o New function requireNamespace() analogous to require(), returning
a logical value after attempting to load a namespace.
o There is a new type of RNG, "L'Ecuyer-CMRG", implementing
L'Ecuyer (1999)'s 'combined multiple-recursive generator'
MRG32k3a. See the comments on ?RNG.
o help.search() and ?? can now display vignettes and demos as well
as help pages. The new option "help.search.types" controls the
types of documentation and the order of their display.
This also applies to HTML searches, which now give results in all
of help pages, vignettes and demos.
o socketConnection() now has a timeout argument. It is now
documented that large values (package snow used a year) do not
work on some OSes.
o The initialization of the random-number generator now uses the
process ID as well as the current time, just in case two R
processes are launched very rapidly on a machine with
low-resolution wall clock (some have a resolution of a second;
modern systems have microsecond-level resolution).
o New function pskill() in the tools package to send a terminate
signal to one or more processes, plus constants such as SIGTERM
to provide a portable way to refer to signals (since the numeric
values are OS-dependent).
o New function psnice() in the tools package to return or change
the 'niceness' of a process. (Refers to the 'priority class' on
Windows.)
o list.dirs() gains a recursive argument.
o An Authors@R field in a package DESCRIPTION file can now be used
to generate Author and Maintainer fields if needed, and to
auto-generate package citations.
o New utility getElement() for accessing either a list component or
a slot in an S4 object.
o stars() gains a col.lines argument, thanks to Dustin Sallings.
(Wish of PR#14657.)
o New function regmatches() for extracting or replacing matched or
non-matched substrings from match data obtained by regexpr(),
gregexpr() and regexec().
o help(package = "pkg_name", help_type = "HTML") now gives HTML
help on the package rather than text help. (This gives direct
access to the HTML version of the package manual shown _via_
help.start()'s 'Packages' menu.)
o agrep() gains a fixed argument to optionally allow approximate
regular expression matching, and a costs argument to specify
possibly different integer match costs for insertions, deletions
and substitutions.
o read.dcf() and write.dcf() gain a keep.white argument to indicate
fields where whitespace should be kept as is.
o available.packages() now works around servers that fail to return
an error code when PACKAGES.gz does not exist. (Patch submitted
by Seth Schommer.)
o readBin() can now read more than 2^31 - 1 bytes in a single call
(the previously documented limitation).
o New function regexec() for finding the positions of matches as
well as all substrings corresponding to parenthesized
subexpressions of the given regular expression.
o New function adist() in package utils for computing 'edit'
(generalized Levenshtein) distances between strings.
o Class "raster" gains an is.na method to avoid confusion from the
misuse of the matrix method (such as PR#14618).
o The identical() function gains an ignore.bytecode argument to
control comparison of compiled functions.
o pmin and pmax now warn if an argument is partially recycled (wish
of PR#14638).
o The default for image(useRaster=) is now taken from option
"preferRaster": for the small print see ?image.
o str() now displays reference class objects and their fields,
rather than treating them as classical S4 classes.
o New function aregexec() in package utils for finding the
positions of approximate string matches as well as all substrings
corresponding to parenthesized subexpressions of the given
regular expression.
o download.file() has an extra argument to pass additional
command-line options to the non-default methods using
command-line utilities.
cacheOK = FALSE is now supported for method = "curl".
o interaction.plot(*, type = .) now also allows type "o" or "c".
o axTicks(*, log=TRUE) did sometimes give more values than the
ticks in the corresponding graphics::axis(). By default, it now
makes use of the new (graphics-package independent) axisTicks()
which can make use of a new utility .axisPars(). Further, it now
returns a decreasing sequence (as for log=FALSE) when usr is
decreasing.
o Using fix() or edit() on a R object (except perhaps a matrix or
data frame) writes its temporary file with extension .R so
editors which select their mode based on the extension will
select a suitable mode.
GRAPHICS DEVICES:
o The pdf() device makes use of Flate compression: this is
controlled by the new logical argument compress, and is enabled
by default.
o Devices svg(), cairo_pdf() and cairo_ps() gain a family argument.
On a Unix-alike X11() gains a family argument. This is one of
the x11.options() and so can be passed as an argument to the
bmp(), jpeg(), png() and tiff() devices.
Analogous changes have been made on Windows, so all built-in R
graphics devices now have a family argument except pictex()
(which has no means to change fonts).
o The bmp(), jpeg(), png() and tiff() devices now make use of the
antialias argument for type = "quartz".
o There are several new built-in font mappings for X11(type =
"Xlib"): see the help on X11Fonts().
o There is a new type X11(type = "dbcairo") which updates the
screen less frequently: see its help page.
o The X11() device now makes use of cursors to distinguish its
states. The normal cursor is an arrow (rather than a crosshair);
the crosshair is used when the locator is in use, and a watch
cursor is shown when plotting computations are being done.
(These are the standard names for X11 cursors: how they are
actually displayed depends on the window manager.)
o New functions dev.hold() and dev.flush() for use with graphics
devices with buffering. These are used for most of the
high-level graphics functions such as boxplot(), so that the plot
is only displayed when the page is complete.
Currently implemented for windows(buffered = TRUE), quartz() and
the cairographics-based X11() types with buffering (which are the
default on-screen devices).
o New function dev.capture() for capture of bitmap snapshots of
image-based devices (a superset of the functionality provided by
grid.cap() in grid).
o The default colormodel for pdf() and postscript() is now called
"srgb" to more accurately describe it. (Instead of "rgb", and in
the case of postscript() it no longer switches to and from the
gray colorspace, by default.)
The colormodel for postscript() which does use both gray and sRGB
colorspaces is now called "srgb+gray".
Plots which are known to use only black/white/transparent can
advantageously use colormodel = "gray" (just as before, but there
is now slightly more advantage in doing so).
o postscript() with values colormodel = "rgb" and colormodel =
"rgb-nogray" give the behaviour prior to R 2.13.0 of uncalibrated
RGB, which under some circumstances can be rendered much faster
by a viewer.
pdf(colormodel = "rgb") gives the behaviour prior to R 2.13.0 of
uncalibrated RGB, which under some circumstances can be rendered
faster by a viewer, and the files will be smaller (by about 9KB
if compression is not used).
o The postscript() device only includes the definition of the sRGB
colorspace in the output file for the colormodels which use it.
o The postscript() and pdf() devices now output greyscale raster
images (and not RGB) when colormodel = "gray".
o postscript(colormodel = "gray") now accepts non-grey colours and
uses their luminance (as pdf() long has).
o colormodel = "grey" is allowed as an alternative name for
postscript() and pdf().
o pdf() in the default sRGB colorspace outputs many fewer changes
of colorspace, which may speed up rendering in some viewing
applications.
o There is a new function dev.capabilities() to query the
capabilities of the current device. The initial set of
capabilities are support for semi-transparent colours, rendering
and capturing raster images, the locator and for interactive
events.
o For pdf(), maxRasters is increased as needed so the argument is
no longer used.
SWEAVE & VIGNETTES:
o Options keep.source = TRUE, figs.only = FALSE are now the
default.
o The way the type of user-defined options is determined has
changed. Previously they were all regarded as logical: now the
type is determined by the value given at first use.
o The allowed values of logical options are now precisely those
allowed for character inputs to as.logical(): this means that t
and f are no longer allowed (although T and F still are).
o The preferred location for vignette sources is now the directory
vignettes and not inst/doc: R CMD build will now re-build
vignettes in directory vignettes and copy the .Rnw (etc) files
and the corresponding PDFs to inst/doc. Further files to be
copied to inst/doc can be specified _via_ the file
vignettes/.install_extras.
o R CMD Sweave now supports a --driver option to select the Sweave
driver: the default is equivalent to --driver=RweaveLatex.
o R CMD Sweave and R CMD Stangle support options --encoding and
--options.
o The Rtangle() driver allows output = "stdout" or output =
"stderr" to select the output or message connection. This is
convenient for scripting using something like
R CMD Stangle --options='output="stdout"' foo.Rnw > foo2.R
o There is a new option pdf.compress controlling whether PDF
figures are generated using Flate compression (they are by
default).
o R CMD Sweave now has a --pdf option to produce a PDF version of
the processed Sweave document.
o It is no longer allowed to have two vignettes with the same
vignette basename (e.g. vig.Rnw and vig.Snw). (Previously one
vignette hid the other in the vignette() function.)
C-LEVEL FACILITIES:
o Function R_tmpnam2 has been added to the API to allow a temporary
filename to include a specified extension.
PACKAGE INSTALLATION:
o Package DESCRIPTION file field KeepSource forces the package to
be installed with keep.source = TRUE (or FALSE). (Suggestion of
Greg Snow. Note that as all packages are lazy-loaded, this is
now only relevant at installation.)
There are corresponding options --with-keep.source and
--without-keep.source for R CMD INSTALL.
o R CMD INSTALL has a new option --byte-compile to byte-compile the
packages during installation (since all packages are now
lazy-loaded). This can be controlled on a per-package basis by
the optional field ByteCompile in the DESCRIPTION file.
o A package R code but without a NAMESPACE file will have a default
one created at R CMD build or R CMD INSTALL time, so all packages
will be installed with namespaces. A consequence of this is that
.First.lib() functions need to be copied to .onLoad() (usually)
or .onAttach(). For the time being, if there is an
auto-generated NAMESPACE file and no .onLoad() nor .onAttach()
function is found but .First.lib() is, it will be run as the
attach hook (unless the package is one of a list of known
exceptions, when it will be run as the load hook).
o A warning is given if test-loading a package changes a locked
binding in a package other than itself. It is likely that this
will be disallowed in future releases. (There are _pro tem_ some
exceptions to the warning.)
o A dependency on SVN revision is allowed for R, e.g. R (>=
r56550). This should be used in conjunction with a version
number, e.g. R (>= 2.14.0), R (>= r56550) to distinguish between
R-patched and R-devel versions with the same SVN revision.
o installed.packages() now hashes the names of its cache files to
avoid very rare problems with excessively long path names.
(PR#14669)
o A top-level COPYING file in a package is no longer installed
(file names LICENSE or LICENCE having long been preferred).
UTILITIES:
o R CMD check now gives an error if the R code in a vignette fails
to run, unless this is caused by a missing package.
o R CMD check now unpacks tarballs in the same way as R CMD
INSTALL, including making use of the environment variable
R_INSTALL_TAR to override the default behaviour.
o R CMD check performs additional code analysis of package startup
functions, and notifies about incorrect argument lists and
(incorrect) calls to functions which modify the search path or
inappropriately generate messages.
o R CMD check now also checks compiled code for symbols
corresponding to functions which might terminate R or write to
stdout/stderr instead of the console.
o R CMD check now uses a pdf() device when checking examples
(rather than postscript()).
o R CMD check now checks line-endings of makefiles and
C/C++/Fortran sources in subdirectories of src as well as in src
itself.
o R CMD check now reports as a NOTE what look like methods
documented with their full names even if there is a namespace and
they are exported. In almost all cases they are intended to be
used only as methods and should use the \method markup. In the
other rare cases the recommended form is to use a function such
as coefHclust which would not get confused with a method,
document that and register it in the NAMESPACE file by
s3method(coef, hclust, coefHclust).
o The default for the environment variable _R_CHECK_COMPACT_DATA2_
is now true: thus if using the newer forms of compression
introduced in R 2.10.0 would be beneficial is now checked (by
default).
o Reference output for a vignette can be supplied when checking a
package by R CMD check: see 'Writing R Extensions'.
o R CMD Rd2dvi allows the use of LaTeX package inputenx rather than
inputenc: the value of the environment variable RD2DVI_INPUTENC
is used. (LaTeX package inputenx is an optional install which
provides greater coverage of the UTF-8 encoding.)
o Rscript on a Unix-alike now accepts file names containing spaces
(provided these are escaped or quoted in the shell).
o R CMD build on a Unix-alike (only) now tries to preserve dates on
files it copies from its input directory. (This was the
undocumented behaviour prior to R 2.13.0.)
DEPRECATED AND DEFUNCT:
o require() no longer has a save argument.
o The gamma argument to hsv(), rainbow(), and rgb2hsv() has been
removed.
o The --no-docs option for R CMD build --binary is defunct: use
--install-args instead.
o The option --unsafe to R CMD INSTALL is defunct: use the
identical option --no-lock instead.
o The entry point pythag formerly in Rmath.h is defunct: use
instead the C99 function hypot.
o R CMD build --binary is formally defunct: R CMD INSTALL --build
has long been the preferred alternative.
o zip.file.extract() is now defunct: use unzip() or unz() instead.
o R CMD Rd2dvi without the --pdf option is now deprecated: only PDF
output will be supported in future releases (since this allows
the use of fonts only supported for PDF), and only R CMD Rd2pdf
will be available.
o Options such as --max-nsize and the function mem.limits() are now
deprecated: these limits are nowadays almost never used, and are
reported by gc() when they are in use.
o Forms like binomial(link = "link") for GLM families deprecated
since R 2.4.0 are now defunct.
o The declarativeOnly argument to loadNamespace() (not relevant
since R 2.13.0) has been removed.
o Use of library.dynam() without specifying all the first three
arguments is deprecated. (It is often called from a namespace,
and the defaults are only appropriate to a package.)
Use of chname in library.dynam() with the extension .so or .dll
(which is clearly not allowed according to the help page) is
deprecated. This also applies to library.dynam.unload() and
useDynLib directives in NAMESPACE files.
o It is deprecated to use mean(x) and sd(x) directly on data frames
(or also matrices, for sd) x, instead of simply using sapply.
In the same spirit, median(x) now gives an error for a data frame
x (it often gave nonsensical results).
o The keep.source argument to library() and require() is
deprecated: it was only used for packages installed without
lazy-loading, and now all packages are lazy-loaded.
o Using a false value for the DESCRIPTION field LazyLoad is
deprecated.
INSTALLATION:
o The base and recommended packages are now byte-compiled
(equivalent to make bytecode in R 2.13.x).
o Configure option --with-system-zlib now only makes use of the
basic interface of zlib and not the C function gzseek which has
shown erroneous behaviour in zlib 1.2.4 and 1.2.5.
o The zlib in the R sources is now version 1.2.5. (This is safe
even on 32-bit Linux systems because only the basic interface is
now used.)
o The .afm files in package grDevices are now installed as
compressed files (as long done on Windows), saving ca 2MB on the
installed size.
o The non-screen cairo-based devices are no longer in the X11
module and so can be installed without X11. (We have never seen
a Unix-alike system with cairographics installed but not X11, but
a user might select --without-x.)
o Configure will try to use -fobjc-exceptions for the Objective-C
compiler (if present) to ensure that even compilers that do not
enable exceptions by default (such as vanilla gcc) can be used.
(Objective-C is currently only used on Mac OS X.)
o The system call times is required.
o The C99 functions acosh, asinh, atanh, snprintf and vsnprintf are
now required.
o There is no longer support for making DVI manuals _via_ make dvi,
make install-dvi and similar. Only PDF manuals are supported (to
allow the use of fonts which are only available for PDF.)
o The configure arguments used during configuration of R are
included as a comment in Makeconf for informative purposes on
Unix-alikes in a form suitable for shell execution. Note that
those are merely command-line arguments, they do not include
environment variables (one more reason to use configure variables
instead) or site configuration settings.
o Framework installation now supports DESTDIR (Mac OS X only).
o Java detection (R CMD javareconf) works around bogus
java.library.path property in recent Oracle Java binaries.
BUG FIXES:
o The locale category LC_MONETARY was only being set on startup on
Windows: that is now done on Unix-alikes where supported.
o Reference class utilities will detect an attempt to modify
methods or fields in a locked class definition (e.g., in a
namespace) and generate an error.
o The formula methods for lines(), points() and text() now work
even if package stats is not on the search path.
o In principle, S4 classes from different packages could have the
same name. This has not previously worked. Changes have now
been installed that should allow such classes and permit methods
to use them. New functions className() and multipleClasses() are
related tools for programming.
o Work around an issue in Linux (a system select call resetting tv)
which prevented internet operations from timing out properly.
o Several stack trampling and overflow issues have been fixed in
TRE, triggered by agrep and friends with long patterns.
(PR#14627)
o ("design infelicity") Field assignments in reference classes are
now consistent with slots in S4 classes: the assigned value must
come from the declared class (if any) for the field or from a
subclass.
o The methods objects constructed for "coerce" and "coerce<-" were
lacking some essential information in the generic, defined and
target slots; as() did not handle duplicate class definitions
correctly.
o The parser no longer accepts the digit 8 in an octal character
code in a string, nor does it accept unterminated strings in a
file. (Reported by Bill Dunlap.)
o The print() method for class "summary.aov" did not pass on
argument digits when summary() was called on a single object, and
hence used more digits than documented.
o The X11() device's cairo back-end produced incorrect capture
snapshot images on big-endian machines.
o loglin() gave a spurious error when argument margin consisted of
a single element of length one. (PR#14690)
o loess() is better protected against misuse, e.g. zero-length
span. (PR#14691)
o HoltWinters() checks that the optimization succeeded. (PR#14694)
o The (undocumented) inclusion of superclass objects in default
initializing of reference classes overwrote explicit field
arguments. The bug is fixed, the feature documented and a test
added.
o round(x, -Inf) now does something sensible (return zero rather
than NA).
o signif(x, -Inf) now behaves as documented (signif(x, 1)) rather
than giving zero.
o The "table" method for Axis() hardcoded side = 1, hence calls to
plot(<vector>, <table>) labelled the wrong axis. (PR#14699)
o Creating a connection might fail under gctorture(TRUE).
o stack() and unstack() converted character columns to factors.
unstack() sometimes produced incorrect results (a list or a
vector) if the factor on which to un-split had only one level.
o On some systems help(".C", help_type = "pdf") and similar
generated file names that TeX was unable to handle.
o Non-blocking listening socket connections continued to report
isIncomplete() as true even when the peer had closed down and all
available input had been read.
o The revised HTML search system now generates better hyperlinks to
help topics found: previously it gave problems with help pages
with names containing e.g. spaces and slashes.
o A late change in R 2.13.2 broke \Sexpr expressions in Rd files.
o The creation of ticks on log axes (including by axTicks())
sometimes incorrectly omitted a tick at one end of the range by
rounding error in a platform-dependent way. This could be seen
in the examples for axTicks(), where with axis limits c(0.2, 88)
the tick for 0.2 was sometimes omitted.
o qgamma() for small shape underflows to 0 rather than sometimes
giving NaN. (PR#8528, PR#14710)
o mapply() now gives an explicit error message (rather than an
obscure one) if inputs of zero and positive length are mixed.
o Setting a Hershey font family followed by string height query
would crash R.
o R CMD javareconf -e would fail for some shells due to a shift
error. Also the resulting paths will no longer contain
$(JAVA_HOME) as that can result in an unintended substitution
based on Makeconf instead of the shell setting.
CHANGES IN R VERSION 2.13.2:
NEW FEATURES:
o mem.limits() now reports values larger than the maximum integer
(previously documented to be reported as NA), and allows larger
values to be set, including Inf to remove the limit.
o The print() methods for classes "Date", "POSIXct" and "POSIXlt"
respect the option "max.print" and so are much faster for very
long datetime vectors. (Suggestion of Yohan Chalabi.)
o untar2() now works around errors generated with tar files that
use more than the standard 6 digits for the checksum. (PR#14654)
o install.packages() with Ncpus > 1 guards against simultaneous
installation of indirect dependencies as well as direct ones.
o Sweave now knows about a few more Windows' encodings (including
cp1250 and cp1257) and some inputenx encodings such as koi8-r.
o postscript(colormodel = "rgb-nogray") no longer sets the sRGB
colorspace for each colour and so some viewers may render its
files much faster than the default colormodel ="rgb".
o The default for pdf(maxRasters=) has been increased from 64 to
1000.
o readBin() now warns if signed = FALSE is used inappropriately
(rather than being silently ignored).
It enforces the documented limit of 2^31-1 bytes in a single
call.
o PCRE has been updated to version 8.13, a bug-fix release with
updated Unicode tables (version 6.0.0). An additional patch
(r611 from PCRE 8.20-to-be) has been added to fix a collation
symbol recognition issue.
INSTALLATION:
o It is possible to build in src/extra/xdr on more platforms.
(Needed since glibc 2.14 hides its RPC implementation.)
o configure will find the Sun TI-RPC implementation of xdr (in
libtirpc) provided its header files are in the search path: see
the 'R Installation and Administration Manual'.
PACKAGE INSTALLATION:
o Using a broad exportPattern directive in a NAMESPACE file is no
longer allowed to export internal objects such as .onLoad and
.__S3MethodsTable__. .
These are also excluded from imports, along with .First.lib.
BUG FIXES:
o fisher.test() had a buglet: If arguments were factors with unused
levels, levels were dropped and you would get an error saying
that there should be at least two levels, inconsistently with
pre-tabulated data. (Reported by Michael Fay).
o package.skeleton() will no longer dump S4 objects supplied
directly rather than in a code file. These cannot be restored
correctly from the dumped version.
o Build-time expressions in help files did not have access to
functions in the package being built (with R CMD build).
o Because quote() did not mark its result as being in use,
modification of the result could in some circumstances modify the
original call.
o Plotting pch = '.' now guarantees at least a one-pixel dot if cex
> 0.
o The very-rarely-used command-line option --max-vsize was
incorrectly interpreted as a number of Vcells and not in bytes as
documented. (Spotted by Christophe Rhodes.)
o The HTML generated by Rd2HTML() comes closer to being standards
compliant.
o filter(x, recursive = TRUE) gave incorrect results on a series
containing NAs. (Spotted by Bill Dunlap.)
o Profiling stats::mle() fits with a fixed parameter was not
supported. (PR#14646)
o retracemem() was still using positional matching. (PR#14650)
o The quantile method for "ecdf" objects now works and is
documented.
o xtabs(~ .., ..., sparse=TRUE) now also works together with an
exclude = .. specification.
o decompose() computed an incorrect seasonal component for time
series with odd frequencies.
o The pdf() device only includes the definition of the sRGB
colorspace in the output file for the "rgb" colormodel (and not
for "gray" nor "cmyk"): this saves ca 9KB in the output file.
o .hasSlot() wrongly gave FALSE in some cases.
o Sweave() with keep.source=TRUE could generate spurious NA lines
when a chunk reference appeared last in a code chunk.
o \Sexpr[results=rd] in an .Rd file now first tries
parse_Rd(fragment=FALSE) to allow Rd section-level macros to be
inserted.
o The print() method for class "summary.aov" did not pass on
arguments such as signif.stars when summary() was called on a
single object. (PR#14684)
o In rare cases ks.test() could return a p-value very slightly less
than 0 by rounding error. (PR#14671)
o If trunc() was called on a "POSIXlt" vector and the result was
subsetted, all but the first element was converted to NA.
(PR#14679)
o cbind() and rbind() could cause memory corruption when used on a
combination of raw and logical/integer vectors.
CHANGES IN R VERSION 2.13.1:
NEW FEATURES:
o iconv() no longer translates NA strings as "NA".
o persp(box = TRUE) now warns if the surface extends outside the
box (since occlusion for the box and axes is computed assuming
the box is a bounding box). (PR#202)
o RShowDoc() can now display the licences shipped with R, e.g.
RShowDoc("GPL-3").
o New wrapper function showNonASCIIfile() in package tools.
o nobs() now has a "mle" method in package stats4.
o trace() now deals correctly with S4 reference classes and
corresponding reference methods (e.g., $trace()) have been added.
o xz has been updated to 5.0.3 (very minor bugfix release).
o tools::compactPDF() gets more compression (usually a little,
sometimes a lot) by using the compressed object streams of PDF
1.5.
o cairo_ps(onefile = TRUE) generates encapsulated EPS on platforms
with cairo >= 1.6.
o Binary reads (e.g. by readChar() and readBin()) are now supported
on clipboard connections. (Wish of PR#14593.)
o as.POSIXlt.factor() now passes ... to the character method
(suggestion of Joshua Ulrich). [Intended for R 2.13.0 but
accidentally removed before release.]
o vector() and its wrappers such as integer() and double() now warn
if called with a length argument of more than one element. This
helps track down user errors such as calling double(x) instead of
as.double(x).
INSTALLATION:
o Building the vignette PDFs in packages grid and utils is now part
of running make from an SVN checkout on a Unix-alike: a separate
make vignettes step is no longer required.
These vignettes are now made with keep.source = TRUE and hence
will be laid out differently.
o make install-strip failed under some configuration options.
o Packages can customize non-standard installation of compiled code
via a src/install.libs.R script. This allows packages that have
architecture-specific binaries (beyond the package's shared
objects/DLLs) to be installed in a multi-architecture setting.
SWEAVE & VIGNETTES:
o Sweave() and Stangle() gain an encoding argument to specify the
encoding of the vignette sources if the latter do not contain a
\usepackage[]{inputenc} statement specifying a single input
encoding.
o There is a new Sweave option figs.only = TRUE to run each figure
chunk only for each selected graphics device, and not first using
the default graphics device. This will become the default in R
2.14.0.
o Sweave custom graphics devices can have a custom function
foo.off() to shut them down.
o Warnings are issued when non-portable filenames are found for
graphics files (and chunks if split = TRUE). Portable names are
regarded as alphanumeric plus hyphen, underscore, plus and hash
(periods cause problems with recognizing file extensions).
o The Rtangle() driver has a new option show.line.nos which is by
default false; if true it annotates code chunks with a comment
giving the line number of the first line in the sources (the
behaviour of R >= 2.12.0).
o Package installation tangles the vignette sources: this step now
converts the vignette sources from the vignette/package encoding
to the current encoding, and records the encoding (if not ASCII)
in a comment line at the top of the installed .R file.
LICENCE:
o No parts of R are now licensed solely under GPL-2. The licences
for packages rpart and survival have been changed, which means
that the licence terms for R as distributed are GPL-2 | GPL-3.
DEPRECATED AND DEFUNCT:
o The internal functions .readRDS() and .saveRDS() are now
deprecated in favour of the public functions readRDS() and
saveRDS() introduced in R 2.13.0.
o Switching off lazy-loading of code _via_ the LazyLoad field of
the DESCRIPTION file is now deprecated. In future all packages
will be lazy-loaded.
o The off-line help() types "postscript" and "ps" are deprecated.
UTILITIES:
o R CMD check on a multi-architecture installation now skips the
user's .Renviron file for the architecture-specific tests (which
do read the architecture-specific Renviron.site files). This is
consistent with single-architecture checks, which use
--no-environ.
o R CMD build now looks for DESCRIPTION fields BuildResaveData and
BuildKeepEmpty for per-package overrides. See 'Writing R
Extensions'.
BUG FIXES:
o plot.lm(which = 5) was intended to order factor levels in
increasing order of mean standardized residual. It ordered the
factor labels correctly, but could plot the wrong group of
residuals against the label. (PR#14545)
o mosaicplot() could clip the factor labels, and could overlap them
with the cells if a non-default value of cex.axis was used.
(Related to PR#14550.)
o dataframe[[row,col]] now dispatches on [[ methods for the
selected column. (Spotted by Bill Dunlap).
o sort.int() would strip the class of an object, but leave its
object bit set. (Reported by Bill Dunlap.)
o pbirthday() and qbirthday() did not implement the algorithm
exactly as given in their reference and so were unnecessarily
inaccurate.
pbirthday() now solves the approximate formula analytically
rather than using uniroot() on a discontinuous function.
The description of the problem was inaccurate: the probability is
a tail probability ('2 _or more_ people share a birthday')
o Complex arithmetic sometimes warned incorrectly about producing
NAs when there were NaNs in the input.
o seek(origin = "current") incorrectly reported it was not
implemented for a gzfile() connection.
o c(), unlist(), cbind() and rbind() could silently overflow the
maximum vector length and cause a segfault. (PR#14571)
o The fonts argument to X11(type = "Xlib") was being ignored.
o Reading (e.g. with readBin()) from a raw connection was not
advancing the pointer, so successive reads would read the same
value. (Spotted by Bill Dunlap.)
o Parsed text containing embedded newlines was printed incorrectly
by as.character.srcref(). (Reported by Hadley Wickham.)
o decompose() used with a series of a non-integer number of periods
returned a seasonal component shorter than the original series.
(Reported by Rob Hyndman.)
o fields = list() failed for setRefClass(). (Reported by Michael
Lawrence.)
o Reference classes could not redefine an inherited field which had
class "ANY". (Reported by Janko Thyson.)
o Methods that override previously loaded versions will now be
installed and called. (Reported by Iago Mosqueira.)
o addmargins() called numeric(apos) rather than
numeric(length(apos)).
o The HTML help search sometimes produced bad links. (PR#14608)
o Command completion will no longer be broken if tail.default() is
redefined by the user. (Problem reported by Henrik Bengtsson.)
o LaTeX rendering of markup in titles of help pages has been
improved; in particular, \eqn{} may be used there.
o isClass() used its own namespace as the default of the where
argument inadvertently.
o Rd conversion to latex mishandled multi-line titles (including
cases where there was a blank line in the \title section). (It
seems this happened only in 2.13.0 patched.)
o postscript() with an sRGB colormodel now uses sRGB for raster
images (in R 2.13.[01] it used uncalibrated RGB).
There is no longer an undocumented 21845-pixel limit on raster
images.
CHANGES IN R VERSION 2.13.0:
SIGNIFICANT USER-VISIBLE CHANGES:
o replicate() (by default) and vapply() (always) now return a
higher-dimensional array instead of a matrix in the case where
the inner function value is an array of dimension >= 2.
o Printing and formatting of floating point numbers is now using
the correct number of digits, where it previously rarely differed
by a few digits. (See "scientific" entry below.) This affects
_many_ *.Rout.save checks in packages.
NEW FEATURES:
o normalizePath() has been moved to the base package (from utils):
this is so it can be used by library() and friends.
It now does tilde expansion.
It gains new arguments winslash (to select the separator on
Windows) and mustWork to control the action if a canonical path
cannot be found.
o The previously barely documented limit of 256 bytes on a symbol
name has been raised to 10,000 bytes (a sanity check). Long
symbol names can sometimes occur when deparsing expressions (for
example, in model.frame).
o reformulate() gains a intercept argument.
o cmdscale(add = FALSE) now uses the more common definition that
there is a representation in n-1 or less dimensions, and only
dimensions corresponding to positive eigenvalues are used.
(Avoids confusion such as PR#14397.)
o Names used by c(), unlist(), cbind() and rbind() are marked with
an encoding when this can be ascertained.
o R colours are now defined to refer to the sRGB color space.
The PDF, PostScript, and Quartz graphics devices record this
fact. X11 (and cairo) and Windows just assume that your screen
conforms.
o system.file() gains a mustWork argument (suggestion of Bill
Dunlap).
o new.env(hash = TRUE) is now the default.
o list2env(envir = NULL) defaults to hashing (with a suitably sized
environment) for lists of more than 100 elements.
o text() gains a formula method.
o IQR() now has a type argument which is passed to quantile().
o as.vector(), as.double() etc duplicate less when they leave the
mode unchanged but remove attributes.
as.vector(mode = "any") no longer duplicates when it does not
remove attributes. This helps memory usage in matrix() and
array().
matrix() duplicates less if data is an atomic vector with
attributes such as names (but no class).
dim(x) <- NULL duplicates less if x has neither dimensions nor
names (since this operation removes names and dimnames).
o setRepositories() gains an addURLs argument.
o chisq.test() now also returns a stdres component, for
standardized residuals (which have unit variance, unlike the
Pearson residuals).
o write.table() and friends gain a fileEncoding argument, to
simplify writing files for use on other OSes (e.g. a spreadsheet
intended for Windows or Mac OS X Excel).
o Assignment expressions of the form foo::bar(x) <- y and
foo:::bar(x) <- y now work; the replacement functions used are
foo::`bar<-` and foo:::`bar<-`.
o Sys.getenv() gains a names argument so Sys.getenv(x, names =
FALSE) can replace the common idiom of as.vector(Sys.getenv()).
The default has been changed to not name a length-one result.
o Lazy loading of environments now preserves attributes and locked
status. (The locked status of bindings and active bindings are
still not preserved; this may be addressed in the future).
o options("install.lock") may be set to FALSE so that
install.packages() defaults to --no-lock installs, or (on
Windows) to TRUE so that binary installs implement locking.
o sort(partial = p) for large p now tries Shellsort if quicksort is
not appropriate and so works for non-numeric atomic vectors.
o sapply() gets a new option simplify = "array" which returns a
"higher rank" array instead of just a matrix when FUN() returns a
dim() length of two or more.
replicate() has this option set by default, and vapply() now
behaves that way internally.
o aperm() becomes S3 generic and gets a table method which
preserves the class.
o merge() and as.hclust() methods for objects of class "dendrogram"
are now provided.
o The character method of as.POSIXlt() now tries to find a format
that works for all non-NA inputs, not just the first one.
o str() now has a method for class "Date" analogous to that for
class "POSIXt".
o New function file.link() to create hard links on those file
systems (POSIX, NTFS but not FAT) that support them.
o New Summary() group method for class "ordered" implements min(),
max() and range() for ordered factors.
o mostattributes<-() now consults the "dim" attribute and not the
dim() function, making it more useful for objects (such as data
frames) from classes with methods for dim(). It also uses
attr<-() in preference to the generics name<-(), dim<-() and
dimnames<-(). (Related to PR#14469.)
o There is a new option "browserNLdisabled" to disable the use of
an empty (e.g. via the 'Return' key) as a synonym for c in
browser() or n under debug(). (Wish of PR#14472.)
o example() gains optional new arguments character.only and
give.lines enabling programmatic exploration.
o serialize() and unserialize() are no longer described as
'experimental'. The interface is now regarded as stable,
although the serialization format may well change in future
releases. (serialize() has a new argument version which would
allow the current format to be written if that happens.)
New functions saveRDS() and readRDS() are public versions of the
'internal' functions .saveRDS() and .readRDS() made available for
general use. The dot-name versions remain available as several
package authors have made use of them, despite the documentation.
readRDS() no longer wraps non-file connections in a call to
gzcon(), for efficiency (see its documentation).
saveRDS() supports compress = "xz".
o Many functions when called with a not-open connection will now
ensure that the connection is left not-open in the event of
error. These include read.dcf(), dput(), dump(), load(),
parse(), readBin(), readChar(), readLines(), save(), writeBin(),
writeChar(), writeLines(), .readRDS(), .saveRDS() and
tools::parse_Rd(), as well as functions calling these.
o Public functions find.package() and path.package() replace the
internal dot-name versions.
o The default method for terms() now looks for a "terms" attribute
if it does not find a "terms" component, and so works for model
frames.
o httpd() handlers receive an additional argument containing the
full request headers as a raw vector (this can be used to parse
cookies, multi-part forms etc.). The recommended full signature
for handlers is therefore function(url, query, body, headers,
...).
o file.edit() gains a fileEncoding argument to specify the encoding
of the file(s).
o The format of the HTML package listings has changed. If there is
more than one library tree , a table of links to libraries is
provided at the top and bottom of the page. Where a library
contains more than 100 packages, an alphabetic index is given at
the top of the section for that library. (As a consequence,
package names are now sorted case-insensitively whatever the
locale.)
o isSeekable() now returns FALSE on connections which have
non-default encoding. Although documented to record if 'in
principle' the connection supports seeking, it seems safer to
report FALSE when it may not work.
o R CMD REMOVE and remove.packages() now remove file R.css when
removing all remaining packages in a library tree. (Related to
the wish of PR#14475: note that this file is no longer
installed.)
o unzip() now has a unzip argument like zip.file.extract(). This
allows an external unzip program to be used, which can be useful
to access features supported by Info-ZIP's unzip version 6 which
is now becoming more widely available.
o There is a simple zip() function, as wrapper for an external zip
command.
o bzfile() connections can now read from concatenated bzip2 files
(including files written with bzfile(open = "a")) and files
created by some other compressors (such as the example of
PR#14479).
o The primitive function c() is now of type BUILTIN.
o plot(<dendrogram>, .., nodePar=*) now obeys an optional xpd
specification (allowing clipping to be turned off completely).
o nls(algorithm="port") now shares more code with nlminb(), and is
more consistent with the other nls() algorithms in its return
value.
o xz has been updated to 5.0.1 (very minor bugfix release).
o image() has gained a logical useRaster argument allowing it to
use a bitmap raster for plotting a regular grid instead of
polygons. This can be more efficient, but may not be supported by
all devices. The default is FALSE.
o list.files()/dir() gains a new argument include.dirs() to include
directories in the listing when recursive = TRUE.
o New function list.dirs() lists all directories, (even empty
ones).
o file.copy() now (by default) copies read/write/execute
permissions on files, moderated by the current setting of
Sys.umask().
o Sys.umask() now accepts mode = NA and returns the current umask
value (visibly) without changing it.
o There is a ! method for classes "octmode" and "hexmode": this
allows xor(a, b) to work if both a and b are from one of those
classes.
o as.raster() no longer fails for vectors or matrices containing
NAs.
o New hook "before.new.plot" allows functions to be run just before
advancing the frame in plot.new, which is potentially useful for
custom figure layout implementations.
o Package tools has a new function compactPDF() to try to reduce
the size of PDF files _via_ qpdf or gs.
o tar() has a new argument extra_flags.
o dotchart() accepts more general objects x such as 1D tables which
can be coerced by as.numeric() to a numeric vector, with a
warning since that might not be appropriate.
o The previously internal function create.post() is now exported
from utils, and the documentation for bug.report() and
help.request() now refer to that for create.post().
It has a new method = "mailto" on Unix-alikes similar to that on
Windows: it invokes a default mailer via open (Mac OS X) or
xdg-open or the default browser (elsewhere).
The default for ccaddress is now getOption("ccaddress") which is
by default unset: using the username as a mailing address
nowadays rarely works as expected.
o The default for options("mailer") is now "mailto" on all
platforms.
o unlink() now does tilde-expansion (like most other file
functions).
o file.rename() now allows vector arguments (of the same length).
o The "glm" method for logLik() now returns an "nobs" attribute
(which stats4::BIC() assumed it did).
The "nls" method for logLik() gave incorrect results for zero
weights.
o There is a new generic function nobs() in package stats, to
extract from model objects a suitable value for use in BIC
calculations. An S4 generic derived from it is defined in
package stats4.
o Code for S4 reference-class methods is now examined for possible
errors in non-local assignments.
o findClasses, getGeneric, findMethods and hasMethods are revised
to deal consistently with the package= argument and be consistent
with soft namespace policy for finding objects.
o tools::Rdiff() now has the option to return not only the status
but a character vector of observed differences (which are still
by default sent to stdout).
o The startup environment variables R_ENVIRON_USER, R_ENVIRON,
R_PROFILE_USER and R_PROFILE are now treated more consistently.
In all cases an empty value is considered to be set and will stop
the default being used, and for the last two tilde expansion is
performed on the file name. (Note that setting an empty value is
probably impossible on Windows.)
o Using R --no-environ CMD, R --no-site-file CMD or R
--no-init-file CMD sets environment variables so these settings
are passed on to child R processes, notably those run by INSTALL,
check and build. R --vanilla CMD sets these three options (but
not --no-restore).
o smooth.spline() is somewhat faster. With cv=NA it allows some
leverage computations to be skipped,
o The internal (C) function scientific(), at the heart of R's
format.info(x), format(x), print(x), etc, for numeric x, has been
re-written in order to provide slightly more correct results,
fixing PR#14491, notably in border cases including when digits >=
16, thanks to substantial contributions (code and experiments)
from Petr Savicky. This affects a noticeable amount of numeric
output from R.
o A new function grepRaw() has been introduced for finding subsets
of raw vectors. It supports both literal searches and regular
expressions.
o Package compiler is now provided as a standard package. See
?compiler::compile for information on how to use the compiler.
This package implements a byte code compiler for R: by default
the compiler is not used in this release. See the 'R
Installation and Administration Manual' for how to compile the
base and recommended packages.
o Providing an exportPattern directive in a NAMESPACE file now
causes classes to be exported according to the same pattern, for
example the default from package.skeleton() to specify all names
starting with a letter. An explicit directive to
exportClassPattern will still over-ride.
o There is an additional marked encoding "bytes" for character
strings. This is intended to be used for non-ASCII strings which
should be treated as a set of bytes, and never re-encoded as if
they were in the encoding of the current locale: useBytes = TRUE
is automatically selected in functions such as writeBin(),
writeLines(), grep() and strsplit().
Only a few character operations are supported (such as substr()).
Printing, format() and cat() will represent non-ASCII bytes in
such strings by a \xab escape.
o The new function removeSource() removes the internally stored
source from a function.
o "srcref" attributes now include two additional line number
values, recording the line numbers in the order they were parsed.
o New functions have been added for source reference access:
getSrcFilename(), getSrcDirectory(), getSrcLocation() and
getSrcref().
o Sys.chmod() has an extra argument use_umask which defaults to
true and restricts the file mode by the current setting of umask.
This means that all the R functions which manipulate
file/directory permissions by default respect umask, notably R
CMD INSTALL.
o tempfile() has an extra argument fileext to create a temporary
filename with a specified extension. (Suggestion and initial
implementation by Dirk Eddelbuettel.)
There are improvements in the way Sweave() and Stangle() handle
non-ASCII vignette sources, especially in a UTF-8 locale: see
'Writing R Extensions' which now has a subsection on this topic.
o factanal() now returns the rotation matrix if a rotation such as
"promax" is used, and hence factor correlations are displayed.
(Wish of PR#12754.)
o The gctorture2() function provides a more refined interface to
the GC torture process. Environment variables R_GCTORTURE,
R_GCTORTURE_WAIT, and R_GCTORTURE_INHIBIT_RELEASE can also be
used to control the GC torture process.
o file.copy(from, to) no longer regards it as an error to supply a
zero-length from: it now simply does nothing.
o rstandard.glm() gains a type argument which can be used to
request standardized Pearson residuals.
o A start on a Turkish translation, thanks to Murat Alkan.
o .libPaths() calls normalizePath(winslash = "/") on the paths:
this helps (usually) to present them in a user-friendly form and
should detect duplicate paths accessed via different symbolic
links.
o download.file() can be now used with external methods even if
there are spaces in the URL or the target filename.
SWEAVE CHANGES:
o Sweave() has options to produce PNG and JPEG figures, and to use
a custom function to open a graphics device (see ?RweaveLatex).
(Based in part on the contribution of PR#14418.)
o The default for Sweave() is to produce only PDF figures (rather
than both EPS and PDF).
o Environment variable SWEAVE_OPTIONS can be used to supply
defaults for existing or new options to be applied after the
Sweave driver setup has been run.
o The Sweave manual is now included as a vignette in the utils
package.
o Sweave() handles keep.source=TRUE much better: it could duplicate
some lines and omit comments. (Reported by John Maindonald and
others.)
C-LEVEL FACILITIES:
o Because they use a C99 interface which a C++ compiler is not
required to support, Rvprintf and REvprintf are only defined by
R_ext/Print.h in C++ code if the macro R_USE_C99_IN_CXX is
defined when it is included.
o pythag duplicated the C99 function hypot. It is no longer
provided, but is used as a substitute for hypot in the very
unlikely event that the latter is not available.
o R_inspect(obj) and R_inspect3(obj, deep, pvec) are (hidden)
C-level entry points to the internal inspect function and can be
used for C-level debugging (e.g., in conjunction with the p
command in gdb).
o Compiling R with --enable-strict-barrier now also enables
additional checking for use of unprotected objects. In
combination with gctorture() or gctorture2() and a C-level
debugger this can be useful for tracking down memory protection
issues.
UTILITIES:
o R CMD Rdiff is now implemented in R on Unix-alikes (as it has
been on Windows since R 2.12.0).
o R CMD build no longer does any cleaning in the supplied package
directory: all the cleaning is done in the copy.
It has a new option --install-args to pass arguments to R CMD
INSTALL for --build (but not when installing to rebuild
vignettes).
There is new option, --resave-data, to call
tools::resaveRdaFiles() on the data directory, to compress
tabular files (.tab, .csv etc) and to convert .R files to .rda
files. The default, --resave-data=gzip, is to do so in a way
compatible even with years-old versions of R, but better
compression is given by --resave-data=best, requiring R >=
2.10.0.
It now adds a datalist file for data directories of more than
1Mb.
Patterns in .Rbuildignore are now also matched against all
directory names (including those of empty directories).
There is a new option, --compact-vignettes, to try reducing the
size of PDF files in the inst/doc directory. Currently this
tries qpdf: other options may be used in future.
When re-building vignettes and a inst/doc/Makefile file is found,
make clean is run if the makefile has a clean: target.
After re-building vignettes the default clean-up operation will
remove any directories (and not just files) created during the
process: e.g. one package created a .R_cache directory.
Empty directories are now removed unless the option
--keep-empty-dirs is given (and a few packages do deliberately
include empty directories).
If there is a field BuildVignettes in the package DESCRIPTION
file with a false value, re-building the vignettes is skipped.
o R CMD check now also checks for filenames that are
case-insensitive matches to Windows' reserved file names with
extensions, such as nul.Rd, as these have caused problems on some
Windows systems.
It checks for inefficiently saved data/*.rda and data/*.RData
files, and reports on those large than 100Kb. A more complete
check (including of the type of compression, but potentially much
slower) can be switched on by setting environment variable
_R_CHECK_COMPACT_DATA2_ to TRUE.
The types of files in the data directory are now checked, as
packages are _still_ misusing it for non-R data files.
It now extracts and runs the R code for each vignette in a
separate directory and R process: this is done in the package's
declared encoding. Rather than call tools::checkVignettes(), it
calls tools::buildVignettes() to see if the vignettes can be
re-built as they would be by R CMD build. Option --use-valgrind
now applies only to these runs, and not when running code to
rebuild the vignettes. This version does a much better job of
suppressing output from successful vignette tests.
The 00check.log file is a more complete record of what is output
to stdout: in particular contains more details of the tests.
It now checks all syntactically valid Rd usage entries, and warns
about assignments (unless these give the usage of replacement
functions).
.tar.xz compressed tarballs are now allowed, if tar supports them
(and setting environment variable TAR to internal ensures so on
all platforms).
o R CMD check now warns if it finds inst/doc/makefile, and R CMD
build renames such a file to inst/doc/Makefile.
INSTALLATION:
o Installing R no longer tries to find perl, and R CMD no longer
tries to substitute a full path for awk nor perl - this was a
legacy from the days when they were used by R itself. Because a
couple of packages do use awk, it is set as the make (rather than
environment) variable AWK.
o make check will now fail if there are differences from the
reference output when testing package examples and if environment
variable R_STRICT_PACKAGE_CHECK is set to a true value.
o The C99 double complex type is now required.
The C99 complex trigonometric functions (such as csin) are not
currently required (FreeBSD lacks most of them): substitutes are
used if they are missing.
o The C99 system call va_copy is now required.
o If environment variable R_LD_LIBRARY_PATH is set during
configuration (for example in config.site) it is used unchanged
in file etc/ldpaths rather than being appended to.
o configure looks for support for OpenMP and if found compiles R
with appropriate flags and also makes them available for use in
packages: see 'Writing R Extensions'.
This is currently experimental, and is only used in R with a
single thread for colSums() and colMeans(). Expect it to be more
widely used in later versions of R.
This can be disabled by the --disable-openmp flag.
PACKAGE INSTALLATION:
o R CMD INSTALL --clean now removes copies of a src directory which
are created when multiple sub-architectures are in use.
(Following a comment from Berwin Turlach.)
o File R.css is now installed on a per-package basis (in the
package's html directory) rather than in each library tree, and
this is used for all the HTML pages in the package. This helps
when installing packages with static HTML pages for use on a
webserver. It will also allow future versions of R to use
different stylesheets for the packages they install.
o A top-level file .Rinstignore in the package sources can list (in
the same way as .Rbuildignore) files under inst that should not
be installed. (Why should there be any such files? Because all
the files needed to re-build vignettes need to be under inst/doc,
but they may not need to be installed.)
o R CMD INSTALL has a new option --compact-docs to compact any PDFs
under the inst/doc directory. Currently this uses qpdf, which
must be installed (see 'Writing R Extensions').
o There is a new option --lock which can be used to cancel the
effect of --no-lock or --pkglock earlier on the command line.
o Option --pkglock can now be used with more than one package, and
is now the default if only one package is specified.
o Argument lock of install.packages() can now be use for Mac binary
installs as well as for Windows ones. The value "pkglock" is now
accepted, as well as TRUE and FALSE (the default).
o There is a new option --no-clean-on-error for R CMD INSTALL to
retain a partially installed package for forensic analysis.
o Packages with names ending in . are not portable since Windows
does not work correctly with such directory names. This is now
warned about in R CMD check, and will not be allowed in R 2.14.x.
o The vignette indices are more comprehensive (in the style of
browseVignetttes()).
DEPRECATED & DEFUNCT:
o require(save = TRUE) is defunct, and use of the save argument is
deprecated.
o R CMD check --no-latex is defunct: use --no-manual instead.
o R CMD Sd2Rd is defunct.
o The gamma argument to hsv(), rainbow(), and rgb2hsv() is
deprecated and no longer has any effect.
o The previous options for R CMD build --binary (--auto-zip,
--use-zip-data and --no-docs) are deprecated (or defunct): use
the new option --install-args instead.
o When a character value is used for the EXPR argument in switch(),
only a single unnamed alternative value is now allowed.
o The wrapper utils::link.html.help() is no longer available.
o Zip-ing data sets in packages (and hence R CMD INSTALL options
--use-zip-data and --auto-zip, as well as the ZipData: yes field
in a DESCRIPTION file) is defunct.
Installed packages with zip-ed data sets can still be used, but a
warning that they should be re-installed will be given.
o The 'experimental' alternative specification of a namespace via
.Export() etc is now defunct.
o The option --unsafe to R CMD INSTALL is deprecated: use the
identical option --no-lock instead.
o The entry point pythag in Rmath.h is deprecated in favour of the
C99 function hypot. A wrapper for hypot is provided for R 2.13.x
only.
o Direct access to the "source" attribute of functions is
deprecated; use deparse(fn, control="useSource") to access it,
and removeSource(fn) to remove it.
o R CMD build --binary is now formally deprecated: R CMD INSTALL
--build has long been the preferred alternative.
o Single-character package names are deprecated (and R is already
disallowed to avoid confusion in Depends: fields).
BUG FIXES:
o drop.terms and the [ method for class "terms" no longer add back
an intercept. (Reported by Niels Hansen.)
o aggregate preserves the class of a column (e.g. a date) under
some circumstances where it discarded the class previously.
o p.adjust() now always returns a vector result, as documented. In
previous versions it copied attributes (such as dimensions) from
the p argument: now it only copies names.
o On PDF and PostScript devices, a line width of zero was recorded
verbatim and this caused problems for some viewers (a very thin
line combined with a non-solid line dash pattern could also cause
a problem). On these devices, the line width is now limited at
0.01 and for very thin lines with complex dash patterns the
device may force the line dash pattern to be solid. (Reported by
Jari Oksanen.)
o The str() method for class "POSIXt" now gives sensible output for
0-length input.
o The one- and two-argument complex maths functions failed to warn
if NAs were generated (as their numeric analogues do).
o Added .requireCachedGenerics to the dont.mind list for library()
to avoid warnings about duplicates.
o $<-.data.frame messed with the class attribute, breaking any S4
subclass. The S4 data.frame class now has its own $<- method,
and turns dispatch on for this primitive.
o Map() did not look up a character argument f in the correct
frame, thanks to lazy evaluation. (PR#14495)
o file.copy() did not tilde-expand from and to when to was a
directory. (PR#14507)
o It was possible (but very rare) for the loading test in R CMD
INSTALL to crash a child R process and so leave around a lock
directory and a partially installed package. That test is now
done in a separate process.
o plot(<formula>, data=<matrix>,..) now works in more cases;
similarly for points(), lines() and text().
o edit.default() contained a manual dispatch for matrices (the
"matrix" class didn't really exist when it was written). This
caused an infinite recursion in the no-GUI case and has now been
removed.
o data.frame(check.rows = TRUE) sometimes worked when it should
have detected an error. (PR#14530)
o scan(sep= , strip.white=TRUE) sometimes stripped trailing spaces
from within quoted strings. (The real bug in PR#14522.)
o The rank-correlation methods for cor() and cov() with use =
"complete.obs" computed the ranks before removing missing values,
whereas the documentation implied incomplete cases were removed
first. (PR#14488)
They also failed for 1-row matrices.
o The perpendicular adjustment used in placing text and expressions
in the margins of plots was not scaled by par("mex"). (Part of
PR#14532.)
o Quartz Cocoa device now catches any Cocoa exceptions that occur
during the creation of the device window to prevent crashes. It
also imposes a limit of 144 ft^2 on the area used by a window to
catch user errors (unit misinterpretation) early.
o The browser (invoked by debug(), browser() or otherwise) would
display attributes such as "wholeSrcref" that were intended for
internal use only.
o R's internal filename completion now properly handles filenames
with spaces in them even when the readline library is used. This
resolves PR#14452 provided the internal filename completion is
used (e.g., by setting rc.settings(files = TRUE)).
o Inside uniroot(f, ...), -Inf function values are now replaced by
a maximally *negative* value.
o rowsum() could silently over/underflow on integer inputs
(reported by Bill Dunlap).
o as.matrix() did not handle "dist" objects with zero rows.
CHANGES IN R VERSION 2.12.2 patched:
NEW FEATURES:
o max() and min() work harder to ensure that NA has precedence over
NaN, so e.g. min(NaN, NA) is NA. (This was not previously
documented except for within a single numeric vector, where
compiler optimizations often defeated the code.)
BUG FIXES:
o A change to the C function R_tryEval had broken error messages in
S4 method selection; the error message is now printed.
o PDF output with a non-RGB color model used RGB for the line
stroke color. (PR#14511)
o stats4::BIC() assumed without checking that an object of class
"logLik" has an "nobs" attribute: glm() fits did not and so BIC()
failed for them.
o In some circumstances a one-sided mantelhaen.test() reported the
p-value for the wrong tail. (PR#14514)
o Passing the invalid value lty = NULL to axis() sent an invalid
value to the graphics device, and might cause the device to
segfault.
o Sweave() with concordance=TRUE could lead to invalid PDF files;
Sweave.sty has been updated to avoid this.
o Non-ASCII characters in the titles of help pages were not
rendered properly in some locales, and could cause errors or
warnings.
o checkRd() gave a spurious error if the \href macro was used.
CHANGES IN R VERSION 2.12.2:
SIGNIFICANT USER-VISIBLE CHANGES:
o Complex arithmetic (notably z^n for complex z and integer n) gave
incorrect results since R 2.10.0 on platforms without C99 complex
support. This and some lesser issues in trigonometric functions
have been corrected.
Such platforms were rare (we know of Cygwin and FreeBSD).
However, because of new compiler optimizations in the way complex
arguments are handled, the same code was selected on x86_64 Linux
with gcc 4.5.x at the default -O2 optimization (but not at -O).
o There is a workaround for crashes seen with several packages on
systems using zlib 1.2.5: see the INSTALLATION section.
NEW FEATURES:
o PCRE has been updated to 8.12 (two bug-fix releases since 8.10).
o rep(), seq(), seq.int() and seq_len() report more often when the
first element is taken of an argument of incorrect length.
o The Cocoa back-end for the quartz() graphics device on Mac OS X
provides a way to disable event loop processing temporarily
(useful, e.g., for forked instances of R).
o kernel()'s default for m was not appropriate if coef was a set of
coefficients. (Reported by Pierre Chausse.)
o bug.report() has been updated for the current R bug tracker,
which does not accept emailed submissions.
o R CMD check now checks for the correct use of $(LAPACK_LIBS) (as
well as $(BLAS_LIBS)), since several CRAN recent submissions have
ignored 'Writing R Extensions'.
INSTALLATION:
o The zlib sources in the distribution are now built with all
symbols remapped: this is intended to avoid problems seen with
packages such as XML and rggobi which link to zlib.so.1 on
systems using zlib 1.2.5.
o The default for FFLAGS and FCFLAGS with gfortran on x86_64 Linux
has been changed back to -g -O2: however, setting -g -O may still
be needed for gfortran 4.3.x.
PACKAGE INSTALLATION:
o A LazyDataCompression field in the DESCRIPTION file will be used
to set the value for the --data-compress option of R CMD INSTALL.
o Files R/sysdata.rda of more than 1Mb are now stored in the
lazyload database using xz compression: this for example halves
the installed size of package Imap.
o R CMD INSTALL now ensures that directories installed from inst
have search permission for everyone.
It no longer installs files inst/doc/Rplots.ps and
inst/doc/Rplots.pdf. These are almost certainly left-overs from
Sweave runs, and are often large.
DEPRECATED & DEFUNCT:
o The 'experimental' alternative specification of a namespace via
.Export() etc is now deprecated.
o zip.file.extract() is now deprecated.
o Zip-ing data sets in packages (and hence R CMD INSTALL
--use-zip-data and the ZipData: yes field in a DESCRIPTION file)
is deprecated: using efficiently compressed .rda images and
lazy-loading of data has superseded it.
BUG FIXES:
o identical() could in rare cases generate a warning about
non-pairlist attributes on CHARSXPs. As these are used for
internal purposes, the attribute check should be skipped.
(Reported by Niels Richard Hansen).
o If the filename extension (usually .Rnw) was not included in a
call to Sweave(), source references would not work properly and
the keep.source option failed. (PR#14459)
o format.data.frame() now keeps zero character column names.
o pretty(x) no longer raises an error when x contains solely
non-finite values. (PR#14468)
o The plot.TukeyHSD() function now uses a line width of 0.5 for its
reference lines rather than lwd = 0 (which caused problems for
some PDF and PostScript viewers).
o The big.mark argument to prettyNum(), format(), etc. was inserted
reversed if it was more than one character long.
o R CMD check failed to check the filenames under man for Windows'
reserved names.
o The "Date" and "POSIXt" methods for seq() could overshoot when to
was supplied and by was specified in months or years.
o The internal method of untar() now restores hard links as file
copies rather than symbolic links (which did not work for
cross-directory links).
o unzip() did not handle zip files which contained filepaths with
two or more leading directories which were not in the zipfile and
did not already exist. (It is unclear if such zipfiles are valid
and the third-party C code used did not support them, but
PR#14462 created one.)
o combn(n, m) now behaves more regularly for the border case m = 0.
(PR#14473)
o The rendering of numbers in plotmath expressions (e.g.
expression(10^2)) used the current settings for conversion to
strings rather than setting the defaults, and so could be
affected by what has been done before. (PR#14477)
o The methods of napredict() and naresid() for na.action =
na.exclude fits did not work correctly in the very rare event
that every case had been omitted in the fit. (Reported by Simon
Wood.)
o weighted.residuals(drop0=TRUE) returned a vector when the
residuals were a matrix (e.g. those of class "mlm"). (Reported
by Bill Dunlap.)
o Package HTML index files <pkg>/html/00Index.html were generated
with a stylesheet reference that was not correct for static
browsing in libraries.
o ccf(na.action = na.pass) was not implemented.
o The parser accepted some incorrect numeric constants, e.g. 20x2.
(Reported by Olaf Mersmann.)
o format(*, zero.print) did not always replace the full zero parts.
o Fixes for subsetting or subassignment of "raster" objects when
not both i and j are specified.
o R CMD INSTALL was not always respecting the ZipData: yes field of
a DESCRIPTION file (although this is frequently incorrectly
specified for packages with no data or which specify lazy-loading
of data).
R CMD INSTALL --use-zip-data was incorrectly implemented as
--use-zipdata since R 2.9.0.
o source(file, echo=TRUE) could fail if the file contained #line
directives. It now recovers more gracefully, but may still
display the wrong line if the directive gives incorrect
information.
o atan(1i) returned NaN+Infi (rather than 0+Infi) on platforms
without C99 complex support.
o library() failed to cache S4 metadata (unlike loadNamespace())
causing failures in S4-using packages without a namespace (e.g.
those using reference classes).
o The function qlogis(lp, log.p=TRUE) no longer prematurely
overflows to Inf when exp(lp) is close to 1.
o Updating S4 methods for a group generic function requires
resetting the methods tables for the members of the group (patch
contributed by Martin Morgan).
o In some circumstances (including for package XML), R CMD INSTALL
installed version-control directories from source packages.
o Added PROTECT calls to some constructed expressions used in C
level eval calls.
o utils:::create.post() (used by bug.report() and help.request())
failed to quote arguments to the mailer, and so often failed.
o bug.report() was naive about how to extract maintainer email
addresses from package descriptions, so would often try mailing
to incorrect addresses.
o debugger() could fail to read the environment of a call to a
function with a ... argument. (Reported by Charlie Roosen.)
o prettyNum(c(1i, NA), drop0=TRUE) or str(NA_complex_) now work
correctly.
CHANGES IN R VERSION 2.12.1:
NEW FEATURES:
o The DVI/PDF reference manual now includes the help pages for all
the standard packages: splines, stats4 and tcltk were previously
omitted (intentionally).
o <URL: http://www.rforge.net> has been added to the default set of
repositories known to setRepositories().
o xz-utils has been updated to version 5.0.0.
o reshape() now makes use of sep when forming names during
reshaping to wide format. (PR#14435)
o legend() allows the length of lines to be set by the end user
_via_ the new argument seg.len.
o New S4 reference class utility methods copy(), field(),
getRefClass() and getClass() have been added to package methods.
o When a character value is used for the EXPR argument in switch(),
a warning is given if more than one unnamed alternative value is
given. This will become an error in R 2.13.0.
o StructTS(type = "BSM") now allows series with just two seasons.
(Reported by Birgit Erni.)
INSTALLATION:
o The PDF reference manual is now built as PDF version 1.5 with
object compression, which on platforms for which this is not the
default (notably MiKTeX) halves its size.
o Variable FCLIBS can be set during configuration, for any
additional library flags needed when linking a shared object with
the Fortran 9x compiler. (Needed with Solaris Studio 12.2.)
BUG FIXES:
o seq.int() no longer sometimes evaluates arguments twice.
(PR#14388)
o The data.frame method of format() failed if a column name was
longer than 256 bytes (the maximum length allowed for an R name).
o predict(<lm object>, type ="terms", ...) failed if both terms and
interval were specified. (Reported by Bill Dunlap.)
Also, if se.fit = TRUE the standard errors were reported for all
terms, not just those selected by a non-null terms.
o The TRE regular expressions engine could terminate R rather than
give an error when given certain invalid regular expressions.
(PR#14398)
o cmdscale(eig = TRUE) was documented to return n-1 eigenvalues but
in fact only returned k. It now returns all n eigenvalues.
cmdscale(add = TRUE) failed to centre the return configuration
and sometimes lost the labels on the points. Its return value
was described wrongly (it is always a list and contains component
ac).
o promptClass() in package methods now works for reference classes
and gives a suitably specialized skeleton of documentation.
Also, callSuper() now works via the methods() invocation as well
as for initially specified methods.
o download.file() could leave the destination file open if the URL
was not able to be opened. (PR#14414)
o Assignment of an environment to functions or as an attribute to
other objects now works for S4 subclasses of "environment".
o Use of [[<- for S4 subclasses of "environment" generated an
infinite recursion from the method. The method has been replaced
by internal code.
o In a reference class S4 method, callSuper() now works in
initialize() methods when there is no explicit superclass method.
o ! dropped attributes such as names and dimensions from a
length-zero argument. (PR#14424)
o When list2env() created an environment it was missing a PROTECT
call and so was vulnerable to garbage collection.
o Sweave() with keep.source=TRUE dropped comments at the start and
end of code chunks. It could also fail when \SweaveInput was
combined with named chunks.
o The Fortran code used by nls(algorithm = "port") could
infinite-loop when compiled with high optimization on a modern
version of gcc, and SAFE_FFLAGS is now used to make this less
likely. (PR#14427, seen with 32-bit Windows using gcc 4.5.0 used
from R 2.12.0.)
o sapply() with default simplify = TRUE and mapply() with default
SIMPLIFY = TRUE wrongly simplified language-like results, as,
e.g., in mapply(1:2, c(3,7), FUN = function(i,j) call(':',i,j)).
o Backreferences to undefined patterns in [g]sub(pcre = TRUE) could
cause a segfault. (PR#14431)
o The format() (and hence the print()) method for class "Date"
rounded fractional dates towards zero: it now always rounds them
down.
o Reference S4 class creation could generate ambiguous inheritance
patterns under very special circumstances.
o [[<- turned S4 subclasses of "environment" into plain
environments.
o Long titles for help pages were truncated in package indices and
a few other places.
o Additional utilities now work correctly with S4 subclasses of
"environment" (rm, locking tools and active bindings).
o spec.ar() now also work for the "ols" method. (Reported by
Hans-Ruedi Kuensch.)
o The initialization of objects from S4 subclasses of "environment"
now allocates a new environment object.
o R CMD check has more protection against (probably erroneous)
example or test output which is invalid in the current locale.
o qr.X() with column names and pivoting now also pivots the column
names. (PR#14438)
o unit.pmax() and unit.pmin() in package grid gave incorrect
results when all inputs were of length 1. (PR#14443)
o The parser for NAMESPACE files ignored misspelled directives,
rather than signalling an error. For 2.12.x a warning will be
issued, but this will be correctly reported as an error in later
releases. (Reported by Charles Berry.)
o Fix for subsetting of "raster" objects when only one of i or j is
specified.
o grid.raster() in package grid did not accept "nativeRaster"
objects (like rasterImage() does).
o Rendering raster images in PDF output was resetting the clipping
region.
o Rendering of raster images on cairo X11 device was wrong,
particularly when a small image was being scaled up using
interpolation.
With cairo < 1.6, will be better than before, though still a
little clunky. With cairo >= 1.6, should be sweet as.
o Several bugs fixed in read.DIF(): single column inputs caused
errors, cells marked as "character" could be converted to other
types, and (in Windows) copying from the clipboard failed.
CHANGES IN R VERSION 2.12.0:
NEW FEATURES:
o Reading a package's CITATION file now defaults to ASCII rather
than Latin-1: a package with a non-ASCII CITATION file should
declare an encoding in its DESCRIPTION file and use that encoding
for the CITATION file.
o difftime() now defaults to the "tzone" attribute of "POSIXlt"
objects rather than to the current timezone as set by the default
for the tz argument. (Wish of PR#14182.)
o pretty() is now generic, with new methods for "Date" and "POSIXt"
classes (based on code contributed by Felix Andrews).
o unique() and match() are now faster on character vectors where
all elements are in the global CHARSXP cache and have unmarked
encoding (ASCII). Thanks to Matthew Dowle for suggesting
improvements to the way the hash code is generated in unique.c.
o The enquote() utility, in use internally, is exported now.
o .C() and .Fortran() now map non-zero return values (other than
NA_LOGICAL) for logical vectors to TRUE: it has been an implicit
assumption that they are treated as true.
o The print() methods for "glm" and "lm" objects now insert
linebreaks in long calls in the same way that the print() methods
for "summary.[g]lm" objects have long done. This does change the
layout of the examples for a number of packages, e.g. MASS.
(PR#14250)
o constrOptim() can now be used with method "SANN". (PR#14245)
It gains an argument hessian to be passed to optim(), which
allows all the ... arguments to be intended for f() and grad().
(PR#14071)
o curve() now allows expr to be an object of mode "expression" as
well as "call" and "function".
o The "POSIX[cl]t" methods for Axis() have been replaced by a
single method for "POSIXt".
There are no longer separate plot() methods for "POSIX[cl]t" and
"Date": the default method has been able to handle those classes
for a long time. This _inter alia_ allows a single date-time
object to be supplied, the wish of PR#14016.
The methods had a different default ("") for xlab.
o Classes "POSIXct", "POSIXlt" and "difftime" have generators
.POSIXct(), .POSIXlt() and .difftime(). Package authors are
advised to make use of them (they are available from R 2.11.0) to
proof against planned future changes to the classes.
The ordering of the classes has been changed, so "POSIXt" is now
the second class. See the document 'Updating packages for
changes in R 2.12.x' on <URL: http://developer.r-project.org> for
the consequences for a handful of CRAN packages.
o The "POSIXct" method of as.Date() allows a timezone to be
specified (but still defaults to UTC).
o New list2env() utility function as an inverse of
as.list(<environment>) and for fast multi-assign() to existing
environment. as.environment() is now generic and uses list2env()
as list method.
o There are several small changes to output which 'zap' small
numbers, e.g. in printing quantiles of residuals in summaries
from "lm" and "glm" fits, and in test statistics in
print.anova().
o Special names such as "dim", "names", etc, are now allowed as
slot names of S4 classes, with "class" the only remaining
exception.
o File .Renviron can have architecture-specific versions such as
.Renviron.i386 on systems with sub-architectures.
o installed.packages() has a new argument subarch to filter on
sub-architecture.
o The summary() method for packageStatus() now has a separate
print() method.
o The default summary() method returns an object inheriting from
class "summaryDefault" which has a separate print() method that
calls zapsmall() for numeric/complex values.
o The startup message now includes the platform and if used,
sub-architecture: this is useful where different
(sub-)architectures run on the same OS.
o The getGraphicsEvent() mechanism now allows multiple windows to
return graphics events, through the new functions
setGraphicsEventHandlers(), setGraphicsEventEnv(), and
getGraphicsEventEnv(). (Currently implemented in the windows()
and X11() devices.)
o tools::texi2dvi() gains an index argument, mainly for use by R
CMD Rd2pdf.
It avoids the use of texindy by texinfo's texi2dvi >= 1.157,
since that does not emulate 'makeindex' well enough to avoid
problems with special characters (such as (, {, !) in indices.
o The ability of readLines() and scan() to re-encode inputs to
marked UTF-8 strings on Windows since R 2.7.0 is extended to
non-UTF-8 locales on other OSes.
o scan() gains a fileEncoding argument to match read.table().
o points() and lines() gain "table" methods to match plot(). (Wish
of PR#10472.)
o Sys.chmod() allows argument mode to be a vector, recycled along
paths.
o There are |, & and xor() methods for classes "octmode" and
"hexmode", which work bitwise.
o Environment variables R_DVIPSCMD, R_LATEXCMD, R_MAKEINDEXCMD,
R_PDFLATEXCMD are no longer used nor set in an R session. (With
the move to tools::texi2dvi(), the conventional environment
variables LATEX, MAKEINDEX and PDFLATEX will be used.
options("dvipscmd") defaults to the value of DVIPS, then to
"dvips".)
o New function isatty() to see if terminal connections are
redirected.
o summaryRprof() returns the sampling interval in component
sample.interval and only returns in by.self data for functions
with non-zero self times.
o print(x) and str(x) now indicate if an empty list x is named.
o install.packages() and remove.packages() with lib unspecified and
multiple libraries in .libPaths() inform the user of the library
location used with a message rather than a warning.
o There is limited support for multiple compressed streams on a
file: all of [bgx]zfile() allow streams to be appended to an
existing file, but bzfile() reads only the first stream.
o Function person() in package utils now uses a given/family scheme
in preference to first/middle/last, is vectorized to handle an
arbitrary number of persons, and gains a role argument to specify
person roles using a controlled vocabulary (the MARC relator
terms).
o Package utils adds a new "bibentry" class for representing and
manipulating bibliographic information in enhanced BibTeX style,
unifying and enhancing the previously existing mechanisms.
o A bibstyle() function has been added to the tools package with
default JSS style for rendering "bibentry" objects, and a
mechanism for registering other rendering styles.
o Several aspects of the display of text help are now customizable
using the new Rd2txt_options() function.
options("help_text_width") is no longer used.
o Added \href tag to the Rd format, to allow hyperlinks to URLs
without displaying the full URL.
o Added \newcommand and \renewcommand tags to the Rd format, to
allow user-defined macros.
o New toRd() generic in the tools package to convert objects to
fragments of Rd code, and added "fragment" argument to Rd2txt(),
Rd2HTML(), and Rd2latex() to support it.
o Directory R_HOME/share/texmf now follows the TDS conventions, so
can be set as a texmf tree ('root directory' in MiKTeX parlance).
o S3 generic functions now use correct S4 inheritance when
dispatching on an S4 object. See ?Methods, section on "Methods
for S3 Generic Functions" for recommendations and details.
o format.pval() gains a ... argument to pass arguments such as
nsmall to format(). (Wish of PR#9574)
o legend() supports title.adj. (Wish of PR#13415)
o Added support for subsetting "raster" objects, plus assigning to
a subset, conversion to a matrix (of colour strings), and
comparisons (== and !=).
o Added a new parseLatex() function (and related functions
deparseLatex() and latexToUtf8()) to support conversion of
bibliographic entries for display in R.
o Text rendering of \itemize in help uses a Unicode bullet in UTF-8
and most single-byte Windows locales.
o Added support for polygons with holes to the graphics engine.
This is implemented for the pdf(), postscript(),
x11(type="cairo"), windows(), and quartz() devices (and
associated raster formats), but not for x11(type="Xlib") or
xfig() or pictex(). The user-level interface is the polypath()
function in graphics and grid.path() in grid.
o File NEWS is now generated at installation with a slightly
different format: it will be in UTF-8 on platforms using UTF-8,
and otherwise in ASCII. There is also a PDF version, NEWS.pdf,
installed at the top-level of the R distribution.
o kmeans(x, 1) now works. Further, kmeans now returns between and
total sum of squares.
o arrayInd() and which() gain an argument useNames. For arrayInd,
the default is now false, for speed reasons.
o As is done for closures, the default print method for the formula
class now displays the associated environment if it is not the
global environment.
o A new facility has been added for inserting code into a package
without re-installing it, to facilitate testing changes which can
be selectively added and backed out. See ?insertSource.
o New function readRenviron to (re-)read files in the format of
~/.Renviron and Renviron.site.
o require() will now return FALSE (and not fail) if loading the
package or one of its dependencies fails.
o aperm() now allows argument perm to be a character vector when
the array has named dimnames (as the results of table() calls
do). Similarly, array() allows MARGIN to be a character vector.
(Based on suggestions of Michael Lachmann.)
o Package utils now exports and documents functions
aspell_package_Rd_files() and aspell_package_vignettes() for
spell checking package Rd files and vignettes using Aspell,
Ispell or Hunspell.
o Package news can now be given in Rd format, and news() prefers
these inst/NEWS.Rd files to old-style plain text NEWS or
inst/NEWS files.
o New simple function packageVersion().
o The PCRE library has been updated to version 8.10.
o The standard Unix-alike terminal interface declares its name to
readline as 'R', so that can be used for conditional sections in
~/.inputrc files.
o 'Writing R Extensions' now stresses that the standard sections in
.Rd files (other than \alias, \keyword and \note) are intended to
be unique, and the conversion tools now drop duplicates with a
warning.
The .Rd conversion tools also warn about an unrecognized type in
a \docType section.
o ecdf() objects now have a quantile() method.
o format() methods for date-time objects now attempt to make use of
a "tzone" attribute with "%Z" and "%z" formats, but it is not
always possible. (Wish of PR#14358.)
o tools::texi2dvi(file, clean = TRUE) now works in more cases (e.g.
where emulation is used and when file is not in the current
directory).
o New function droplevels() to remove unused factor levels.
o system(command, intern = TRUE) now gives an error on a Unix-alike
(as well as on Windows) if command cannot be run. It reports a
non-success exit status from running command as a warning.
On a Unix-alike an attempt is made to return the actual exit
status of the command in system(intern = FALSE): previously this
had been system-dependent but on POSIX-compliant systems the
value return was 256 times the status.
o system() has a new argument ignore.stdout which can be used to
(portably) ignore standard output.
o system(intern = TRUE) and pipe() connections are guaranteed to be
available on all builds of R.
o Sys.which() has been altered to return "" if the command is not
found (even on Solaris).
o A facility for defining reference-based S4 classes (in the OOP
style of Java, C++, etc.) has been added experimentally to
package methods; see ?ReferenceClasses.
o The predict method for "loess" fits gains an na.action argument
which defaults to na.pass rather than the previous default of
na.omit.
Predictions from "loess" fits are now named from the row names of
newdata.
o Parsing errors detected during Sweave() processing will now be
reported referencing their original location in the source file.
o New adjustcolor() utility, e.g., for simple translucent color
schemes.
o qr() now has a trivial lm method with a simple (fast) validity
check.
o An experimental new programming model has been added to package
methods for reference (OOP-style) classes and methods. See
?ReferenceClasses.
o bzip2 has been updated to version 1.0.6 (bug-fix release).
--with-system-bzlib now requires at least version 1.0.6.
o R now provides jss.cls and jss.bst (the class and bib style file
for the Journal of Statistical Software) as well as RJournal.bib
and Rnews.bib, and R CMD ensures that the .bst and .bib files are
found by BibTeX.
o Functions using the TAR environment variable no longer quote the
value when making system calls. This allows values such as tar
--force-local, but does require additional quotes in, e.g., TAR =
"'/path with spaces/mytar'".
DEPRECATED & DEFUNCT:
o Supplying the parser with a character string containing both
octal/hex and Unicode escapes is now an error.
o File extension .C for C++ code files in packages is now defunct.
o R CMD check no longer supports configuration files containing
Perl configuration variables: use the environment variables
documented in 'R Internals' instead.
o The save argument of require() now defaults to FALSE and save =
TRUE is now deprecated. (This facility is very rarely actually
used, and was superseded by the Depends field of the DESCRIPTION
file long ago.)
o R CMD check --no-latex is deprecated in favour of --no-manual.
o R CMD Sd2Rd is formally deprecated and will be removed in R
2.13.0.
PACKAGE INSTALLATION:
o install.packages() has a new argument libs_only to optionally
pass --libs-only to R CMD INSTALL and works analogously for
Windows binary installs (to add support for 64- or 32-bit
Windows).
o When sub-architectures are in use, the installed architectures
are recorded in the Archs field of the DESCRIPTION file. There
is a new default filter, "subarch", in available.packages() to
make use of this.
Code is compiled in a copy of the src directory when a package is
installed for more than one sub-architecture: this avoid problems
with cleaning the sources between building sub-architectures.
o R CMD INSTALL --libs-only no longer overrides the setting of
locking, so a previous version of the package will be restored
unless --no-lock is specified.
UTILITIES:
o R CMD Rprof|build|check are now based on R rather than Perl
scripts. The only remaining Perl scripts are the deprecated R
CMD Sd2Rd and install-info.pl (used only if install-info is not
found) as well as some maintainer-mode-only scripts.
*NB:* because these have been completely rewritten, users should
not expect undocumented details of previous implementations to
have been duplicated.
R CMD no longer manipulates the environment variables PERL5LIB
and PERLLIB.
o R CMD check has a new argument --extra-arch to confine tests to
those needed to check an additional sub-architecture.
Its check for "Subdirectory 'inst' contains no files" is more
thorough: it looks for files, and warns if there are only empty
directories.
Environment variables such as R_LIBS and those used for
customization can be set for the duration of checking _via_ a
file ~/.R/check.Renviron (in the format used by .Renviron, and
with sub-architecture specific versions such as
~/.R/check.Renviron.i386 taking precedence).
There are new options --multiarch to check the package under all
of the installed sub-architectures and --no-multiarch to confine
checking to the sub-architecture under which check is invoked.
If neither option is supplied, a test is done of installed
sub-architectures and all those which can be run on the current
OS are used.
Unless multiple sub-architectures are selected, the install done
by check for testing purposes is only of the current
sub-architecture (_via_ R CMD INSTALL --no-multiarch).
It will skip the check for non-ascii characters in code or data
if the environment variables _R_CHECK_ASCII_CODE_ or
_R_CHECK_ASCII_DATA_ are respectively set to FALSE. (Suggestion
of Vince Carey.)
o R CMD build no longer creates an INDEX file (R CMD INSTALL does
so), and --force removes (rather than overwrites) an existing
INDEX file.
It supports a file ~/.R/build.Renviron analogously to check.
It now runs build-time \Sexpr expressions in help files.
o R CMD Rd2dvi makes use of tools::texi2dvi() to process the
package manual. It is now implemented entirely in R (rather than
partially as a shell script).
o R CMD Rprof now uses utils::summaryRprof() rather than Perl. It
has new arguments to select one of the tables and to limit the
number of entries printed.
o R CMD Sweave now runs R with --vanilla so the environment setting
of R_LIBS will always be used.
C-LEVEL FACILITIES:
o lang5() and lang6() (in addition to pre-existing lang[1-4]())
convenience functions for easier construction of eval() calls.
If you have your own definition, do wrap it inside #ifndef lang5
.... #endif to keep it working with old and new R.
o Header R.h now includes only the C headers it itself needs, hence
no longer includes errno.h. (This helps avoid problems when it
is included from C++ source files.)
o Headers Rinternals.h and R_ext/Print.h include the C++ versions
of stdio.h and stdarg.h respectively if included from a C++
source file.
INSTALLATION:
o A C99 compiler is now required, and more C99 language features
will be used in the R sources.
o Tcl/Tk >= 8.4 is now required (increased from 8.3).
o System functions access, chdir and getcwd are now essential to
configure R. (In practice they have been required for some
time.)
o make check compares the output of the examples from several of
the base packages to reference output rather than the previous
output (if any). Expect some differences due to differences in
floating-point computations between platforms.
o File NEWS is no longer in the sources, but generated as part of
the installation. The primary source for changes is now
doc/NEWS.Rd.
o The popen system call is now required to build R. This ensures
the availability of system(intern = TRUE), pipe() connections and
printing from postscript().
o The pkg-config file libR.pc now also works when R is installed
using a sub-architecture.
o R has always required a BLAS that conforms to IE60559 arithmetic,
but after discovery of more real-world problems caused by a BLAS
that did not, this is tested more thoroughly in this version.
BUG FIXES:
o Calls to selectMethod() by default no longer cache inherited
methods. This could previously corrupt methods used by as().
o The densities of non-central chi-squared are now more accurate in
some cases in the extreme tails, e.g. dchisq(2000, 2, 1000), as a
series expansion was truncated too early. (PR#14105)
o pt() is more accurate in the left tail for ncp large, e.g.
pt(-1000, 3, 200). (PR#14069)
o The default C function (R_binary) for binary ops now sets the S4
bit in the result if either argument is an S4 object. (PR#13209)
o source(echo=TRUE) failed to echo comments that followed the last
statement in a file.
o S4 classes that contained one of "matrix", "array" or "ts" and
also another class now accept superclass objects in new(). Also
fixes failure to call validObject() for these classes.
o Conditional inheritance defined by argument test in
methods::setIs() will no longer be used in S4 method selection
(caching these methods could give incorrect results). See
?setIs.
o The signature of an implicit generic is now used by setGeneric()
when that does not use a definition nor explicitly set a
signature.
o A bug in callNextMethod() for some examples with "..." in the
arguments has been fixed. See file
src/library/methods/tests/nextWithDots.R in the sources.
o match(x, table) (and hence %in%) now treat "POSIXlt" consistently
with, e.g., "POSIXct".
o Built-in code dealing with environments (get(), assign(),
parent.env(), is.environment() and others) now behave
consistently to recognize S4 subclasses; is.name() also
recognizes subclasses.
o The abs.tol control parameter to nlminb() now defaults to 0.0 to
avoid false declarations of convergence in objective functions
that may go negative.
o The standard Unix-alike termination dialog to ask whether to save
the workspace takes a EOF response as n to avoid problems with a
damaged terminal connection. (PR#14332)
o Added warn.unused argument to hist.default() to allow suppression
of spurious warnings about graphical parameters used with
plot=FALSE. (PR#14341)
o predict.lm(), summary.lm(), and indeed lm() itself had issues
with residual DF in zero-weighted cases (the latter two only in
connection with empty models). (Thanks to Bill Dunlap for
spotting the predict() case.)
o aperm() treated resize = NA as resize = TRUE.
o constrOptim() now has an improved convergence criterion, notably
for cases where the minimum was (very close to) zero; further,
other tweaks inspired from code proposals by Ravi Varadhan.
o Rendering of S3 and S4 methods in man pages has been corrected
and made consistent across output formats.
o Simple markup is now allowed in \title sections in .Rd files.
o The behaviour of as.logical() on factors (to use the levels) was
lost in R 2.6.0 and has been restored.
o prompt() did not backquote some default arguments in the \usage
section. (Reported by Claudia Beleites.)
o writeBin() disallows attempts to write 2GB or more in a single
call. (PR#14362)
o new() and getClass() will now work if Class is a subclass of
"classRepresentation" and should also be faster in typical calls.
o The summary() method for data frames makes a better job of names
containing characters invalid in the current locale.
o [[ sub-assignment for factors could create an invalid factor
(reported by Bill Dunlap).
o Negate(f) would not evaluate argument f until first use of
returned function (reported by Olaf Mersmann).
o quietly=FALSE is now also an optional argument of library(), and
consequently, quietly is now propagated also for loading
dependent packages, e.g., in require(*, quietly=TRUE).
o If the loop variable in a for loop was deleted, it would be
recreated as a global variable. (Reported by Radford Neal; the
fix includes his optimizations as well.)
o Task callbacks could report the wrong expression when the task
involved parsing new code. (PR#14368)
o getNamespaceVersion() failed; this was an accidental change in
2.11.0. (PR#14374)
o identical() returned FALSE for external pointer objects even when
the pointer addresses were the same.
o L$a@x[] <- val did not duplicate in a case it should have.
o tempfile() now always gives a random file name (even if the
directory is specified) when called directly after startup and
before the R RNG had been used. (PR#14381)
o quantile(type=6) behaved inconsistently. (PR#14383)
o backSpline(.) behaved incorrectly when the knot sequence was
decreasing. (PR#14386)
o The reference BLAS included in R was assuming that 0*x and x*0
were always zero (whereas they could be NA or NaN in IEC 60559
arithmetic). This was seen in results from tcrossprod, and for
example that log(0) %*% 0 gave 0.
o The calculation of whether text was completely outside the device
region (in which case, you draw nothing) was wrong for screen
devices (which have [0, 0] at top-left). The symptom was (long)
text disappearing when resizing a screen window (to make it
smaller). (PR#14391)
o model.frame(drop.unused.levels = TRUE) did not take into account
NA values of factors when deciding to drop levels. (PR#14393)
o library.dynam.unload required an absolute path for libpath.
(PR#14385)
Both library() and loadNamespace() now record absolute paths for
use by searchpaths() and getNamespaceInfo(ns, "path").
o The self-starting model NLSstClosestX failed if some deviation
was exactly zero. (PR#14384)
o X11(type = "cairo") (and other devices such as png using
cairographics) and which use Pango font selection now work around
a bug in Pango when very small fonts (those with sizes between 0
and 1 in Pango's internal units) are requested. (PR#14369)
o Added workaround for the font problem with X11(type = "cairo")
and similar on Mac OS X whereby italic and bold styles were
interchanged. (PR#13463 amongst many other reports.)
o source(chdir = TRUE) failed to reset the working directory if it
could not be determined - that is now an error.
o Fix for crash of example(rasterImage) on x11(type="Xlib").
o Force Quartz to bring the on-screen display up-to-date
immediately before the snapshot is taken by grid.cap() in the
Cocoa implementation. (PR#14260)
o model.frame had an unstated 500 byte limit on variable names.
(Example reported by Terry Therneau.)
o The 256-byte limit on names is now documented.
o Subassignment by [, [[ or $ on an expression object with value
NULL coerced the object to a list.
CHANGES IN R VERSION 2.11.1 patched:
NEW FEATURES:
o install.packages() has a new optional argument INSTALL_opts which
can be used to pass options to R CMD INSTALL for source-package
installs.
o R CMD check now runs the package-specific tests with LANGUAGE=en
to facilitate comparison to .Rout.save files.
o sessionInfo() gives more detailed platform information, including
32/64-bit and the sub-architecture if one is used.
DEPRECATED & DEFUNCT:
o The use of Perl configuration variables for R CMD check (as
previously documented in 'Writing R Extensions') is deprecated
and will be removed in R 2.12.0. Use the environment variables
documented in 'R Internals' instead.
BUG FIXES:
o R CMD Rd2dvi failed if run from a path containing space(s). This
also affected R CMD check, which calls Rd2dvi.
o stripchart() could fail with an empty factor level. (PR#14317)
o Text help rendering of \tabular{} has been improved: under some
circumstances leading blank columns were not rendered.
o strsplit(x, fixed=TRUE) marked UTF-8 strings with the local
encoding when no splits were found.
o weighted.mean(NA, na.rm=TRUE) and similar now returns NaN again,
as it did prior to R 2.10.0.
o R CMD had a typo in its detection of whether the environment
variable TEXINPUTS was set (reported by Martin Morgan).
o The command-line parser could mistake --file=size... for one of
the options for setting limits for Ncells or Vcells.
o The internal strptime() could corrupt its copy of the timezone
which would then lead to spurious warnings. (PR#14338)
o dir.create(recursive = TRUE) could fail if one of the components
existed but was a directory on a read-only file system. (Seen on
Solaris, where the error code returned is not even listed as
possible on the man page.)
o The postscript() and pdf() devices will now allow lwd values less
than 1 (they used to force such values to be 1).
o Fixed font face for CID fonts in pdf() graphics output.
(PR#14326)
o GERaster() now checks for width or height of zero and does
nothing in those cases; previously the behaviour was undefined,
probably device-specific, and possibly dangerous.
o wilcox.test(x, y, conf.int = TRUE) failed with an unhelpful
message if x and y were constant vectors, and similarly in the
one-sample case. (PR#14329)
o Improperly calling Recall() from outside a function could cause a
segfault. (Reported by Robert McGehee.)
o \Sexpr[result=rd] in an Rd file added a spurious newline, which
was displayed as extra whitespace when rendered.
o require(save = TRUE) recorded the names of packages it failed to
load.
o packageStatus() could return a data frame with duplicate row
names which could then not be printed.
o txtProgressBar(style = 2) did not work correctly.
txtProgressBar(style = 3) did not display until a non-minimum
value was set.
o contour() did not display dashed line types properly when contour
lines were labelled. (Reported by David B. Thompson.)
o tools::undoc() again detects undocumented data objects. Of
course, this also affects R CMD check.
o ksmooth(x,NULL) no longer segfaults.
o approxfun(), approx(), splinefun() and spline() could be confused
by x values that were different but so close as to print
identically. (PR#14377)
CHANGES IN R VERSION 2.11.1:
NEW FEATURES:
o R CMD INSTALL checks if dependent packages are available early on
in the installation of source packages, thereby giving clearer
error messages.
o R CMD INSTALL --build now names the file in the format used for
Mac OS X binary files on that platform.
o BIC() in package stats4 now also works with multiple fitted
models, analogously to AIC().
DEPRECATED & DEFUNCT:
o Use of file extension .C for C++ code in packages is now
deprecated: it has caused problems for some makes on
case-insensitive file systems (although it currently works with
the recommended toolkits).
INSTALLATION:
o Command gnutar is preferred to tar when configure sets TAR. This
is needed on Mac OS 10.6, where the default tar, bsdtar 2.6.2,
has been reported to produce archives with illegal extensions to
tar (according to the POSIX standard).
BUG FIXES:
o The C function mkCharLenCE now no longer reads past len bytes
(unlikely to be a problem except in user code). (PR#14246)
o On systems without any default LD_LIBRARY_PATH (not even
/usr/local/lib), [DY]LIB_LIBRARY_PATH is now set without a
trailing colon. (PR#13637)
o More efficient implementation of utf8ToInt() on long multi-byte
strings with many multi-byte characters. (PR#14262)
o aggregate.ts() gave platform-dependent results due to rounding
error for ndeltat != 1.
o package.skeleton() sometimes failed to fix filenames for .R or
.Rd files to start with an alphanumeric. (PR#14253)
It also failed when only an S4 class without any methods was
defined. (PR#14280)
o splinefun(method = "monoH.FC") was not quite monotone in rare
cases. (PR#14215)
o Rhttpd no longer crashes due to SIGPIPE when the client closes
the connection prematurely. (PR#14266)
o format.POSIXlt() could cause a stack overflow and crash when used
on very long vectors. (PR#14267)
o Rd2latex() incorrectly escaped special characters in \usage
sections.
o mcnemar.test() could alter the levels (dropping unused levels) if
passed x and y as factors (reported by Greg Snow).
o Rd2pdf sometimes needed a further pdflatex pass to get
hyperlinked pages correct.
o interaction() produced malformed results when levels were
duplicated, causing segfaults in split().
o cut(d, breaks = <n>) now also works for "Date" or "POSIXt"
argument d. (PR#14288)
o memDecompress() could decompress incompletely rare xz-compressed
input due to incorrect documentation of xz utils. (Report and
patch from Olaf Mersmann.)
o The S4 initialize() methods for "matrix", "array", and "ts" have
been fixed to call validObject(). (PR#14284)
o R CMD INSTALL now behaves the same way with or without
--no-multiarch on platforms with only one installed architecture.
(It used to clean the src directory without --no-multiarch.)
o [<-.data.frame was not quite careful enough in assigning (and
potentially deleting) columns right-to-left. (PR#14263)
o rbeta(n, a, b) no longer occasionally returns NaN for a >> 1 > b.
(PR#14291)
o pnorm(x, log.p = TRUE) could return NaN not -Inf for x near
(minus for lower.tail=TRUE) the largest representable number.
o Compressed data files *.(txt|tab|csv).(gz|bz2|xz) were not
recognized for the list of data topics and hence for packages
using LazyData. (PR#14273)
o textConnection() did an unnecessary translation on strings in a
foreign encoding (e.g. UTF-8 strings on Windows) and so was
slower than it could have been on very long input strings.
(PR#14286)
o tools::Rd2txt() did not render poorly written Rd files
consistently with other renderers.
It computed widths of strings that would be print()ed with
escapes incorrectly, for example in the computation of column
width for \tabular.
o na.action() did not extract the na.action component as
documented.
o do.call()ing NextMethod in erroneous ways no longer segfaults.
(PR#13487)
CHANGES IN R VERSION 2.11.0:
SIGNIFICANT USER-VISIBLE CHANGES:
o Packages must have been installed under R >= 2.10.0, as the
current help system is the only one now supported.
o A port to 64-bit Windows is now available as well as binary
package repositories: see the 'R Administration and Installation
Manual'.
o Argument matching for primitive functions is now done in the same
way as for interpreted functions except for the deliberate
exceptions
call switch .C .Fortran .Call .External
all of which use positional matching for their first argument,
and also some internal-use-only primitives.
o The default device for command-line R at the console on Mac OS X
is now quartz() and not X11().
NEW FEATURES:
o The open modes for connections are now interpreted more
consistently. open = "r" is now equivalent to open = "rt" for
all connections. The default open = "" now means "rt" for all
connections except the compressed-file connections gzfile(),
bzfile() and xzfile() for which it means "rb".
o R CMD INSTALL now uses the internal untar() function in package
utils: this ensures that all platforms can install bzip2- and
xz-compressed tarballs. In case this causes problems (as it has
on some Windows file systems when run from Cygwin tools) it can
be overridden by the environment variable R_INSTALL_TAR: setting
this to a modern external tar program will speed up unpacking of
large (tens of Mb or more) tarballs.
o help(try.all.packages = TRUE) is much faster (although the time
taken by the OS to find all the packages the first time it is
used can dominate the time).
o R CMD check has a new option --timings to record per-example
timings in file <pkg>.Rcheck/<pkg>-Ex.timings.
o The TRE library has been updated to version 0.8.0 (minor
bugfixes).
o grep[l], [g]sub and [g]regexpr now work in bytes in an 8-bit
locales if there is no marked UTF-8 input string: this will be
somewhat faster, and for [g]sub() give the result in the native
encoding rather than in UTF-8 (which returns to the behaviour
prior to R 2.10.0).
o A new argument skipCalls has been added to browser() so that it
can report the original context when called by other debugging
functions.
o More validity checking of UTF-8 and MBCS strings is done by
agrep() and the regular-expression matching functions.
o The undocumented restriction on gregexpr() to length(text) > 0
has been removed.
o Package tcltk now sends strings to Tcl in UTF-8: this means that
strings with a marked UTF-8 encoding are supported in non-UTF-8
locales.
o The graphics engine now supports rendering of raster (bitmap)
images, though not all graphics devices can provide (full)
support. Packages providing graphics devices (e.g., Cairo,
RSvgDevice, cairoDevice) will need to be reinstalled.
There is also support in the graphics engine for capturing raster
images from graphics devices (again not supported on all graphics
devices).
o R CMD check now also checks if the package and namespace can be
unloaded: this provides a check of the .Last.lib() and
.onUnload() hook functions (unless --install=fake).
o prop.table(x) now accepts a one-dimensional table for x.
o A new function vapply() has been added, based on a suggestion
from Bill Dunlap. It requires that a template for the function
value be specified, and uses it to determine the output type and
to check for consistency in the function values.
o The main HTML help page now links to a reformatted copy of this
NEWS file. (Suggested by Henrik Bengtsson.) Package index files
link to the package DESCRIPTION and NEWS files and a list of
demos when using dynamic help.
o The [ method for class "AsIs" allows the next method to change
the underlying class. (Wish of Jens Oehlschl"agel.)
o write.csv[2] no longer allow argument append to be changed: as
ever, direct calls to write.table() give more flexibility as well
as more room for error.
o The index page for HTML help for a package now collapses multiple
signatures for S4 methods into a single entry.
o The use of .required by require() and detach() has been replaced
by .Depends which is set from the Depends field of a package
(even in packages with namespaces). By default detach() prevents
such dependencies from being detached: this can be overridden by
the argument force.
o bquote() has been extended to work on function definitions.
(Wish of PR#14031).
o detach() when applied to an object other than a package returns
the environment that has been detached, to parallel attach().
o readline() in non-interactive use returns "" and does not attempt
to read from the 'terminal'.
o New function file_ext() in package tools.
o xtfrm() is now primitive and internally generic, as this allows
S4 methods to be set on it without name-space scoping issues.
There are now "AsIs" and "difftime" methods, and the default
method uses unclass(x) if is.numeric(x) is true (which will be
faster but relies on is.numeric() having been set correctly for
the class).
o is.numeric(x) is now false for a "difftime" object
(multiplication and division make no sense for such objects).
o The default method of weighted.mean(x, w) coerces w to be numeric
(aka double); previously only integer weights were coerced. Zero
weights are handled specially so an infinite value with zero
weight does not force an NaN result.
There is now a "difftime" method.
o bug.report() now has arguments package and lib.loc to generate
bug reports about packages. When this is used, it looks for a
BugReports field in the package DESCRIPTION file, which will be
assumed to be a URL at which to submit the report, and otherwise
generates an email to the package maintainer. (Suggested by
Barry Rowlingson.)
o quantile() now has a method for the date-time class "POSIXt", and
types 1 and 3 (which never interpolate) work for Dates and
ordered factors.
o length(<POSIXlt>) now returns the length of the corresponding
abstract timedate-vector rather than always 9 (the length of the
underlying list structure). (Wish of PR#14073 and PR#10507.)
o The readline completion backend no longer sorts possible
completions alphabetically (e.g., function argument names) if R
was built with readline >= 6.
o select.list() gains a graphics argument to allow Windows/Mac
users to choose the text interface. This changes the behaviour
of new.packages(ask=TRUE) to be like update.packages(ask=TRUE) on
those platforms in using a text menu: use ask="graphics" for a
graphical menu.
o New function chooseBioCmirror() to set the "BioC_mirror" option.
o The R grammar now prevents using the argument name in signatures
of S4 methods for $ and $<-, since they will always be called
with a character string value for name. The implicit S4 generic
functions have been changed to reflect this: packages which
included name in the signature of their methods need to be
updated and re-installed.
o The handling of the method argument of glm() has been refined
following suggestions by Ioannis Kosmidis and Heather Turner.
o str() gains a new argument list.len with default 99, limiting the
number of list() items (per level), thanks to suggestions from
David Winsenius.
o Having formal arguments of an S4 method in a different order from
the generic is now an error (the warning having been ignored by
some package maintainers for a long time).
o New functions enc2native() and enc2utf8() convert character
vectors with possibly marked encodings to the current locale and
UTF-8 respectively.
o Unrecognized escapes and embedded nuls in character strings are
now an error, not just a warning. Thus option "warnEscapes" is
no longer needed. rawToChar() now removes trailing nuls
silently, but other embedded nuls become errors.
o Informational messages about masked objects displayed when a
package is attached are now more compact, using strwrap() instead
of one object per line.
o print.rle() gains argument prefix.
o download.file() gains a "curl" method, mainly for use on
platforms which have curl but not wget, but also for some
hard-to-access URLs.
o In Rd, \eqn and \deqn will render in HTML (and convert to text)
upper- and lower-case Greek letters (entered as \alpha ...),
\ldots, ..., \ge and \le.
o utf8ToInt() and intToUtf8() now map NA inputs to NA outputs.
o file() has a new argument raw which may help if it is used with
something other than a regular file, e.g. a character device.
o New function strtoi(), a wrapper for the C function strtol.
o as.octmode() and as.hexmode() now allow inputs of length other
than one.
The format() and print() methods for "octmode" now preserve names
and dimensions (as those for "hexmode" did).
The format() methods for classes "octmode" and "hexmode" gain a
width argument.
o seq.int() returns an integer result in some further cases where
seq() does, e.g. seq.int(1L, 9L, by = 2L).
o Added \subsection{}{} macro to Rd syntax, for subsections within
sections.
o n-dimensional arrays with dimension names can now be indexed by
an n-column character matrix. The indices are matched against
the dimension names. NA indices are propagated to the result.
Unmatched values and "" are not allowed and result in an error.
o interaction(drop=TRUE) uses less memory (related to PR#14121).
o summary() methods have been added to the "srcref" and "srcfile"
classes, and various encoding issues have been cleaned up.
o If option "checkPackageLicense" is set to TRUE (not currently the
default), users will be asked to agree to non-known-to-be-FOSS
package licences at first use.
o Checking setAs(a, b) methods only gives a message instead of a
warning, when one of a or b is unknown.
o New function norm() to compute a matrix norm. norm() and also
backsolve() and sample() have implicit S4 generics.
o Files Renviron.site and Rprofile.site can have
architecture-specific versions on systems with sub-architectures.
o R CMD check now (by default) also checks Rd files for
auto-generated content in need of editing, and missing argument
descriptions.
o aggregate() gains a formula method thanks to a contribution by
Arni Magnusson. The data frame method now allows summary
functions to return arbitrarily many values.
o path.expand() now propagates NA values rather than converting
them to "NA".
o file.show() now disallows NA values for file names, headers, and
pager.
o The 'fuzz' used by seq() and seq.int() has been reduced from 1e-7
to 1e-10, which should be ample for the double-precision
calculations used in R. It ensures that the fuzz never comes
into play with sequences of integers (wish of PR#14169).
o The default value of RSiteSearch(restrict=) has been changed to
include vignettes but to exclude R-help. The R-help archives
available have been split, with a new option of "Rhelp10" for
those from 2010.
o New function rasterImage() in the graphics package for drawing
raster images.
o stats:::extractAIC.coxph() now omits aliased terms when computing
the degrees of freedom (suggestion of Terry Therneau).
o cor() and cov() now test for misuse with non-numeric arguments,
such as the non-bug report PR#14207.
o pchisq(ncp =, log.p = TRUE) is more accurate for probabilities
near one. E.g. pchisq(80, 4, ncp=1, log.p=TRUE). (Maybe what
was meant in PR#14216.)
o maintainer() has been added, to give convenient access to the
name of the maintainer of a package (contributed by David Scott).
o sample() and sample.int() allow zero items to be sampled from a
zero-length input. sample.int() gains a default value size=n to
be more similar to sample().
o switch() returned NULL on error (not previously documented on the
help page): it now does so invisibly, analogously to
if-without-else.
It is now primitive: this means that argument EXPR is always
matched to the first argument and there is no danger of partial
matching to later named arguments.
o Primitive functions UseMethod(), attr(), attr<-(), on.exit(),
retracemem() and substitute() now use standard argument matching
(rather than positional matching). This means that all
multi-argument primitives which are not internal now use standard
argument matching except where positional matching is desirable
(as for switch(), call(), .C() ...).
o All the one-argument primitives now check that any name supplied
for their first argument is a partial match to the argument name
as documented on the help page: this also applies to replacement
functions of two arguments.
o base::which() uses a new .Internal function when arr.ind is FALSE
resulting in a 10x speedup. Thanks to Patrick Aboyoun for
implementation suggestions.
o Help conversion to text now uses the first part of \enc{}{}
markup if it is representable in the current output encoding. On
the other hand, conversion to LaTeX with the default
outputEncoding = "ASCII" uses the second part.
o A new class "listOfMethods" has been introduced to represent the
methods in a methods table, to replace the deprecated class
"MethodsList".
o any() and all() return early if possible. This may speed up
operations on long vectors.
o strptime() now accepts "%z" (for the offset from UTC in the
RFC822 format of +/-hhmm).
o The PCRE library has been updated to version 8.02, a bug-fix
release which also updates tables to Unicode 5.02.
o Functions which may use a graphical select.list() (including
menu() and install.packages()) now check on a Unix-alike that Tk
can be started (and not just capabilities("tcltk") &&
capabilities("X11")).
o The parser no longer marks strings containing octal or hex
escapes as being in UTF-8 when entered in a UTF-8 locale.
o On platforms with cairo but not Pango (notably Mac OS X) the
initial default X11() type is set to "Xlib": this avoids several
problems with font selection when done by cairo rather than Pango
(at least on Mac OS X).
o New function arrayInd() such that which(x, arr.ind = TRUE) for an
array 'x' is now equivalent to arrayInd(which(x), dim(x),
dimnames(x)).
DEPRECATED & DEFUNCT:
o Bundles of packages are defunct.
o stats::clearNames() is defunct: use unname().
o Basic regular expressions are defunct, and strsplit(), grep(),
grepl(), sub(), gsub(), regexpr() and gregexpr() no longer have
an extended argument.
o methods::trySilent() is defunct.
o index.search() (which was deprecated in 2.10.0) is no longer
exported and has a different argument list.
o Use of multiple arguments to return() is now defunct.
o The use of UseMethod() with more than two arguments is now
defunct.
o In the methods package, the "MethodsList" metadata objects which
had been superseded by hash tables (environments) since R 2.8.0
are being phased out. Objects of this class are no longer
assigned or used as metadata by the package.
getMethods() is now deprecated, with its internal use replaced by
findMethods() and other changes. Creating objects from the
"MethodsList" class is also deprecated.
o Parsing strings containing both octal/hex and Unicode escapes now
gives a warning and will become an error in R 2.12.0.
INSTALLATION:
o UTF-8 is now used for the reference manual and package manuals.
This requires LaTeX '2005/12/01' or later.
o configure looks for a POSIX compliant tr, Solaris's /usr/ucb/tr
having been found to cause Rdiff to malfunction.
o configure is now generated with autoconf 2.65, which works better
on recent systems and on Mac OS X.
PACKAGE INSTALLATION:
o Characters in R source which are not translatable to the current
locale are now handled more tolerantly: these will be converted
to hex codes with a warning. Such characters are only really
portable if they appear in comments.
o R CMD INSTALL now tests that the installed package can be loaded
(and backs out the installation if it cannot): this can be
suppressed by --no-test-load. This avoids installing/updating a
package that cannot be used: common causes of failures to load
are missing/incompatible external software and missing/broken
dependent packages.
o Package installation on Windows for a package with a src
directory now checks if a DLL is created unless there is a
src/Makefile.win file: this helps catch broken installations
where the toolchain has not reported problems in building the
DLL. (Note: this can be any DLL, not just one named
<pkg-name>.dll.)
BUG FIXES:
o Using with(), eval() etc with a list with some unnamed elements
now works. (PR#14035)
o The "quick" dispatch of S4 methods for primitive functions was
not happening, forcing a search each time. (Dispatch for
closures was not affected.) A side effect is that default values
for arguments in a method that do not have defaults in the
generic will now be ignored.
o Trying to dispatch S4 methods for primitives during the search
for inherited methods slows that search down and potentially
could cause an infinite recursion. An internal switch was added
to turn off all such methods from findInheritedMethods().
o R framework installation (on Mac OS X) would not work properly if
a rogue Resources directory was present at the top level. Such a
non-symlink will now be renamed to Resources.old (and anything
previously named Resources.old removed) as part of the framework
installation process.
o The checks for conforming S4 method arguments could fail when the
signature of the generic function omitted some of the formal
arguments (in addition to ...). Arguments omitted from the
method definition but conforming (per the documentation) should
now be ignored (treated as "ANY") in dispatching.
o The computations for S4 method evaluation when ... was in the
signature could fail, treating ... as an ordinary symbol. This
has been fixed, for the known cases.
o Various ar() fitting methods have more protection for singular
fits.
o callNextMethod now works again with the drop= argument in [
o parse() and parse_Rd() miscounted columns when multibyte UTF-8
characters were present.
o Formatting of help pages has had minor improvements: extra blank
lines have been removed from the text format, and empty package
labels removed from HTML.
o cor(A, B) where A is n x 1 and B a 1-dimensional array segfaulted
or gave an internal error. (The case cor(B, A) was PR#7116.)
o cut.POSIXt() applied to a start value after the DST transition on
a DST-change day could give the wrong time for argument breaks in
units of days or longer. (PR#14208)
o do_par() UNPROTECTed too early (PR#14214)
o Subassignment x[[....]] <- y didn't check for a zero-length right
hand side, and inserted a rubbish value. (PR#14217)
o fisher.test() no longer gives a P-value *very* slightly > 1, in
some borderline cases.
o Internal function matchArgs() no longer modifies the general
purpose bits of the SEXPs that make up the formals list of R
functions. This fixes an invalid error message that would occur
when a garbage collection triggered a second call to matchArgs
for the same function _via_ a finalizer.
o gsub() in 2.10.x could fail from stack overflow for extremely
long strings due to temporary data being allocated on the stack.
Also, gsub() with fixed=TRUE is in some circumstances
considerably faster.
o Several primitives, including attributes(), attr<-()
interactive(), nargs() and proc.time(), did not check that they
were called with the correct number of arguments.
o A potential race condition in list.files() when other processes
are operating on the directory has been fixed; the code now
dynamically allocates memory for file listings in a single pass
instead of making an initial count pass.
o mean(x, trim=, na.rm = FALSE) failed to return NA if x contained
missing values. (Reported by Bill Dunlap.)
o Extreme tail behavior of, pbeta() {and hence pf()}, e.g.,
pbeta(x, 3, 2200, lower.tail=FALSE, log.p=TRUE) now returns
finite values instead of jumping to -Inf too early. (PR#14230).
o parse(text=x) misbehaved for objects x that were not coerced
internally to character, notably symbols. (Reported to R-devel
by Bill Dunlap.)
o The internal C function coerceSymbol now handles coercion to
character, and warns if coercion fails (rather than silently
returning NULL). This allows a name to be given where a
character vector is required in functions which coerce
internally.
o The interpretation by strptime() of "%c" was non-standard (not
that it is ever advisable to use locale- and system-specific
input formats).
o capabilities("X11") now works the same way on Mac OS X as on
other platforms (and as documented: it was always true for R
built with --with-aqua, as the CRAN builds are).
o The X11() device with cairo but not Pango (notably Mac OS X) now
checks validity of text strings in UTF-8 locales (since Pango
does but cairo it seems does not).
o read.fwf() misread multi-line records when n was specified.
(PR#14241)
o all.equal(tolerance = e) passes the numeric tolerance also to the
comparison of the attributes.
o pgamma(0, 0), a boundary case, now returns 0, its limit from the
left, rather than the limit from the right.
o Issuing POST requests to the internal web server could stall the
request under certain circumstances.
o gzcon( <textConnection> ), an error, no longer damages the
connection (in a way to have it segfault). (PR#14237)
o All the results from hist() now use the nominal breaks not those
adjusted by the numeric 'fuzz': in recent versions the nominal
breaks were reported but the 'density' referred to the intervals
used in the calculation - which mattered very slightly for one of
the extreme bins. (Based on a report by Martin Becker.)
o If xy[z].coords (used internally by many graphics functions) are
given a list as x, they now check that the list has suitable
names and give a more informative error message. (PR#13936)
CHANGES IN R VERSION 2.10.1 patched:
NEW FEATURES:
o The handling of line textures in the postscript() and pdf()
devices was set up for round end caps (the only type which
existed at the time): it has now been adjusted for butt endcaps.
o lchoose(a, k) is now defined as log(abs(choose(a,k))),
analogously to lfactorial().
o Although \eqn{} in Rd files is defined as a 'verbatim' macro,
many packages expected ... and \ldots to be interpreted there (as
was the case in R < 2.10.0), so this is now done (using an
ellipsis in HTML rendering).
o Escaping of braces in quoted strings in R-code sections of Rd
files is allowed again. This had been changed for the new Rd
format in R 2.10.0 but was only documented on the developer site
and was handled inconsistently by the converters: text and
example conversion removed the escapes but HTML conversion did
not.
o The PCRE library has been updated to version 8.01, a bug-fix
release.
o tools::readNEWS() now accepts a digit as the first character of a
news section.
BUG FIXES:
o Using read.table(header=TRUE) on a header with an embedded new
line would copy part of the header into the data. (PR#14103)
o qpois(p = 1, lambda = 0) now gives 0 as for all other p.
(PR#14135)
o Functions related to string comparison (e.g. unique(), match())
could cause crashes when used with strings not in the native
encoding, e.g. UTF-8 strings on Windows. (PR#14114 and PR#14125)
o x[ , drop=TRUE] dropped an NA level even if it was in use.
o The dynamic HTML help system reported the wrong MIME type for the
style sheet.
o tools::codoc() (used by R CMD check) was missing cases where the
function had no arguments but was documented to have some.
o Help links containing special characters (e.g. "?") were not
generated correctly when rendered in HTML. (PR#14155)
o lchoose(a, k) no longer wrongly gives NaN for negative a.
o ks.test() could give a p-value that was off by one observation
due to rounding error. (PR#14145)
o readBin()/readChar() when reading millions of character strings
in a single call used excessive amounts of memory (which also
slowed them down).
o R CMD SHLIB could fail if used with paths that were not
alphanumeric, e.g. contained +. (PR#14168)
o sprintf() was not re-entrant, which potentially caused problems
if an as.character() method called it.
o The quartz() device did not restore the clipping region when
filling the background for a new page. This could be observed in
multi-page bitmap output as stale outer regions of the plot.
o p.adjust(method, n) now works correctly for the rare case n >
length(p), also when method differs from "bonferroni" or "none",
thanks to a patch from Gordon Smyth.
o tools::showNonASCII() failed to detect non-ASCII characters if
iconv() (incorrectly) converted them to different ASCII
characters. (Seen on Windows only.)
o tcrossprod() wrongly failed in some cases when one of the
arguments was a vector and the other a matrix.
o [cr]bind(..., deparse.level=2) was not always giving names when
documented to do so. (Discovered whilst investigating PR#14189.)
o match(incomparables=<non-NULL>) could in rare cases
infinite-loop.
o poisson.test() needed to pass argument conf.level to
binom.test(). (PR#14195)
o The "nls" method for df.residual() gave incorrect results for
models fitted with na.action = na.exclude. (PR#14194)
o A change to options(scipen=) was only implemented when printing
next occurred, even though it should have affected intervening
calls to axis(), contour() and filledcontour().
o prettyNum(drop0trailing=TRUE) did not handle signs of imaginary
parts of complex numbers correctly (and this was used by str():
PR#14201).
o system.time() had the sys.child component wrong (copied
user.child instead) on systems with HAVE_GETRUSAGE. (PR#14210)
o Changing both line texture and line cap (end) resulted in the
latter to be omitted form the PDF code. In addition, line cap
(end) and join are now set explicitly in PDF output to ensure
correct defaults.
o The suppression of auto-rotation in bitmap() and dev2bitmap()
with the "pdfwrite" device was not working correctly.
o plot(ecdf(), log="x") no longer gives an incorrect warning.
o read.fwf() works again when argument file is a connection.
o Startup files will now be found if their paths exceed 255 bytes.
(PR#14228)
o contrasts<- (in the stats package) no longer has an undeclared
dependence on methods (introduced in 2.10.0).
CHANGES IN R VERSION 2.10.1:
NEW FEATURES:
o The PCRE library has been updated to version 8.00.
o R CMD INSTALL has new options --no-R, --no-libs, --no-data,
--no-help, --no-demo, --no-exec, and --no-inst to suppress
installation of the specified part of the package. These are
intended for special purposes (e.g. building a database of help
pages without fully installing all packages).
o The documented line-length limit of 4095 bytes when reading from
the console now also applies also to parse(file="") (which
previously had a limit of around 1024 bytes).
o A Bioconductor mirror can be set for use by setRepositories()
_via_ the option "BioC_mirror", e.g. the European mirror can be
selected by
options(BioC_mirror="http://bioconductor.statistik.tu-dortmund.de").
o Double-clicking in a tk_select.list() list box now selects the
item and closes the list box (as happens on the Windows
select.list() widget).
INSTALLATION:
o configure will be able to find a usable libtiff in some rare
circumstances where it did not previously (where libtiff needed
to be linked explicitly against -ljpeg).
o Making refman.pdf works around a problem with the indexing with
hyperref 6.79d and later.
DEPRECATED & DEFUNCT:
o The extended argument is deprecated in strsplit(), grep(),
grepl(), sub(), gsub(), regexpr() and gregexpr() (not just the
value extended = FALSE) and will be removed in R 2.11.0.
BUG FIXES:
o trigamma(x) and other psigamma(x, n) calls are now accurate for
very large abs(x). (PR#14020)
o [g]sub(perl=FALSE, fixed=FALSE) could use excessive stack space
when used with a very long vector containing some non-ASCII
strings.
o The default method of weighted.mean(na.rm = TRUE) did not omit
weights for NA observations in 2.10.0. (PR#14032)
o [g]regexpr(pattern, fixed = TRUE) returned match positions in
bytes (not characters) in an MBCS locale if pattern was a single
byte.
[g]sub(fixed = TRUE) with a single-byte pattern could conceivably
have matched part of a multibyte character in a non-UTF-8 MBCS.
o findLineNum() and setBreakpoint() would sometimes fail if the
specified file was not in the current directory.
o Package tcltk's demo(tkdensity) was broken in 2.9.0 when demo()
was changed to set par(ask = TRUE).
o gsub() with backrefs could fail on extremely long strings
(hundreds of thousands of characters) due to integer overflow in
a length calculation.
o abline(untf=TRUE) now uses a better x-grid in log-scale, e.g.,
for plot(c(1,300), c(1,300), log="xy"); abline(4,1, untf=TRUE).
o detach()/unloadNamespace() arrange to flush the package's
lazyload cache of R objects once the package/namespace is no
longer needed.
o There have been small fixes to the rendering of help, e.g.
\command is now rendered verbatim (so e.g. -- is not interpreted,
PR#14045).
Also, there are many small changes to help files where the new
converters were not rendering them in the same way as before.
o available.packages() would fail when run on a repository with no
packages meeting the filtering conditions. (PR#14042)
o rep(x, times, each = 2) gave invalid results when the times
argument was a vector longer than x. Reported by Bill Dunlap.
o An error when unloadNamespace() attempted to run the .onUnload()
function gave an error in the reporting function and so was not
reported properly.
o Text help rendering did not handle very long input lines
properly.
o promptMethods() generated signature documentation improperly.
o pgamma(x, a, lower.tail=FALSE) and qgamma(...) are now
considerably more accurate in some regions for very small a.
qgamma() now correctly returns 0 instead of NaN in similar
extreme cases, and qgamma() no longer warns in the case of small
a, see (PR#12324).
o unname() now also removes names from a zero length vector.
o Printing results from ls.str() no longer evaluates unevaluated
calls.
o complete.cases() failed on a 0-column data frame argument.
(Underlies PR#14066.)
It could return nonsensical results if no input determined the
number of cases (seen in the no-segfault tests).
o An error in nls() with a long formula could cause a segfault.
(PR#14059)
o qchisq(p, df, ncp, lower.tail = FALSE) with ncp >= 80 was
inaccurate for small p (as the help page said): it is now less
inaccurate. (In part, PR#13999.)
For ncp less than but close to 80, pchisq() and qchisq() are more
accurate for probabilities very close to 1 (a series expansion
was truncated slightly too early).
pchisq(x, df, ncp) can no longer return values just larger than
one for large values of ncp.
o intToUtf8() could fail when asked to produce 10Mb or more
strings, something it was never intended to do: unfortunately
Windows crashed R (other OSes reported a lack of resources).
(PR#14068)
o chisq.test() could fail when given argument x or y which deparsed
to more than one line. (Reported by Laurent Gauthier.)
o S4 methods are uncached whenever the namespace containing them is
unloaded (by unloadNamespace() as well as by detach(unload =
TRUE)).
o The internal record-keeping by dyn.load/dyn.unload was
incomplete, which could crash R if a DLL that registered
.External routines had earlier been unloaded.
o bessel[JY](x, nu) with nu a negative integer (a singular case) is
now correct, analogously to besselI(), see PR#13556.
o tools::file_path_as_absolute() doubled the file separator when
applied to a file such as "/vmunix" or (on Windows) "d:/afile" in
a directory for which getwd() would return a path with a trailing
separator (largely cosmetic, as reasonable file systems handle
such a path correctly). (Perhaps what was meant by PR#14078.)
o unsplit(drop = TRUE) applied to a data frame failed to pass drop
to the computation of row names. (PR#14084)
o The "difftime" method of mean() ignored its na.rm argument.
o tcltk::tk_select.list() is now more likely to remove the widget
immediately after selection is complete.
o Adding/subtracting a "difftime" object to/from a "POSIXt" or
"Date" object works again (it was broken by the addition of
Ops.difftime).
o Conversion to latex of an Rd file with no aliases failed.
o wilcox.test(conf.int=TRUE) has achieved.level corrected and, for
exact=FALSE, now returns a estimate component which does not
depend on the alternative used.
o help.search() failed when the package argument was specified.
(PR#14113)
o switch(EXPR = "A") now returns NULL, as does switch(1) (which
used to signal an error).
CHANGES IN R VERSION 2.10.0:
SIGNIFICANT USER-VISIBLE CHANGES:
o Package help is now converted from Rd by the R-based converters
that were first introduced in 2.9.0. This means
o Packages that were installed by R-devel after 2009-08-09
should not be used with earlier versions of R, and most
aspects of package help (including the runnable examples)
will be missing if they are so used.
o Text, HTML and latex help and examples for packages installed
under the new system are converted on-demand from stored
parsed Rd files. (Conversions stored in packages installed
under R < 2.10.0 are used if no parsed Rd files are found.
It is recommended that such packages be re-installed.)
o HTML help is now generated dynamically using an HTTP server
running in the R process and listening on the loopback interface.
o Those worried about security implications of such a server
can disable it by setting the environment variable
R_DISABLE_HTTPD to a non-empty value. This disables
help.start() and HTML help (so text help is shown instead).
o The Java/Javascript search engine has been replaced by an
HTML interface to help.search(). help.start() no longer has
an argument searchEngine as it is no longer needed.
o The HTML help can now locate cross-references of the form
\link[pkg]{foo} and \link[pkg:foo]{bar} where foo is an alias
in the package, rather than the documented (basename of a)
filename (since the documentation has been much ignored).
NEW FEATURES:
o polygon(), pdf() and postscript() now have an argument
fillOddEven (default FALSE), which controls the mode used for
polygon fills of self-intersecting shapes.
o New debugonce() function; further, getOption("deparse.max.lines")
is now observed when debugging, from a code suggestion by John
Brzustowski. (PR#13647/8)
o plot() methods for "stepfun" and hence "ecdf" no longer plot
points by default for n >= 1000.
o [g]sub(perl=TRUE) now also supports "\E" in order to *end* "\U"
and "\L" case changes, thanks to a patch from Bill Dunlap.
o factor(), levels()<-, etc, now ensure that the resulting factor
levels are unique (as was always the implied intention). Factors
with duplicated levels are still constructible by low-level
means, but are now declared illegal.
o New print() (S3) method for class "function", also used for
auto-printing. Further, .Primitive functions now print and
auto-print identically. The new method is based on code
suggestions by Romain Francois.
o The print() and toLatex() methods for class "sessionInfo" now
show the locale in a nicer format and have arguments to suppress
locale information.
o In addition to previously only round(), there are other Math
group (S3) methods for "difftime", such as floor(), signif(),
abs(), etc.
o For completeness, old.packages() and available.packages() allow
arguments type to be specified (you could always specify
arguments available or contriburl).
o available.packages() by default only returns information on the
latest versions of packages whose version requirements are
satisfied by the currently running R.
o tools::write_PACKAGES() has a new argument latestOnly, which
defaults to TRUE when only the latest versions in the repository
will be listed in the index.
o getOption() has a new argument default that is returned if the
specified option is not set. This simplifies querying a value
and checking whether it is NULL or not.
o parse() now warns if the requested encoding is not supported.
o The "table" method of as.data.frame() gains a stringsAsFactors
argument to allow the classifying factors to be returned as
character vectors rather than the default factor type.
o If model.frame.default() encounters a character variable where
xlev indicates a factor, it now converts the variable to a factor
(with a warning).
o curve() now returns a list containing the points that wSSere
drawn.
o spineplot() now accepts axes = FALSE, for consistency with other
functions called by plot.factor().
o The Kendall and Spearman methods of cor.test() can optionally use
continuity correction when not computing exact p-values. (The
Kendall case is the wish of PR#13691.)
o R now keeps track of line numbers during execution for code
sourced with options(keep.source = TRUE). The source reference
is displayed by debugging functions such as traceback(),
browser(), recover(), and dump.frames(), and is stored as an
attribute on each element returned by sys.calls().
o More functions now have an implicit (S4) generic definition.
o quantile.default() now disallows factors (wish of PR#13631) and
its help documents what numeric-like properties its input need to
have to work correctly.
o weighted.mean() is now generic and has "Date", "POSIXct" and
"POSIXlt" methods.
o Naming subscripts (e.g. x[i=1, j=2]) in data.frame methods for [
and [[ now gives a warning. (Names are ignored in the default
method, but could have odd semantics for other methods, and do
for the data.frame ones.)
o as.data.frame() has an "aovproj" method. (Wish of PR#13505)
o as.character(x) for numeric x no longer produces strings such as
"0.30", i.e., with trailing zeros. This change also renders
levels construction in factor() more consistent.
o codocClasses(), which checks consistency of the documentation of
S4 class slots, now does so in considerably more cases. The
documentation of inherited slots (from superclasses) is now
optional. This affects R CMD check <pkg> when the package
defines S4 classes.
o codoc() now also checks S4 methods for code/documentation
mismatches.
o for(), while(), and repeat() loops now always return NULL as
their (invisible) value. This change was needed to address a
reference counting bug without creating performance penalties for
some common use cases.
o The print() method for ls.str() results now obeys an optional
digits argument.
o The method argument of glm() now allows user-contributed methods.
o More general reorder.default() replaces functionality of
reorder.factor() and reorder.character().
o The function aspell() has been added to provide an interface to
the Aspell spell-checker.
o Filters RdTextFilter() and SweaveTeXFilter() have been added to
the tools package to provide support for aspell() or other spell
checkers.
o xtabs() with the new argument sparse = TRUE now returns a sparse
Matrix, using package Matrix.
o contr.sum() etc gain an argument sparse which allows sparse
matrices to be returned.
contrasts() also gains a sparse argument which it passes to the
actual contrast function if that has a formal argument sparse.
contrasts(f, .) <- val now also works when val is a sparse
Matrix. It is planned that model.matrix() will work with such
factors f in the future.
o readNEWS() will recognize a UTF-8 byte-order mark (BOM) in the
NEWS file. However, it is safer to use only ASCII code there
because not all editors recognize BOMs.
o New utility function inheritedSlotNames() for S4 class
programming.
o tabulate() now allows NAs to pass through (and be ignored).
o If debug() is called on an S3 generic function then all methods
are debugged as well.
o Outlier symbols drawn by boxplot() now obey the outlwd argument.
Reported by Jurgen Kluge.
o svd(x) and eigen(x) now behave analogously to qr(x) in accepting
logical matrices x.
o File NEWS is now in UTF-8, and has a BOM (often invisible) on the
first line, and Emacs local variables set for UTF-8 at the end.
RShowDoc("NEWS") should display this correctly, given suitable
fonts.
o terms.formula(simplify = TRUE) now does not deparse the LHS and
so preserves non-standard responses such as `a: b` (requested by
Sundar Dorai-Raj).
o New function news() for building and querying R or package news
information.
o z^n for integer n and complex z is more accurate now if |n| <=
65536.
o factor(NULL) now returns the same as factor(character(0)) instead
of an error, and table(NULL) consequently does analogously.
o as.data.frame.vector() (and its copies) is slightly faster by
avoiding a copy if there are no names (following a suggestion of
Tim Hesterberg).
o writeLines(), writeBin() and writeChar() have a new argument
useBytes. If false, character strings with marked encodings are
translated to the current locale (as before) but if true they are
written byte-by-byte.
o iconv() has a new argument mark which can be used (by experts) to
suppress the declaration of encodings.
o DESCRIPTION file's LinkingTo specs are now recognized as
installation dependencies, and included in package management
computations.
o Standardized DESCRIPTION file License specs are now available for
package management computations.
o "\uxxxx" and "\Uxxxxxxxx" escapes can now be parsed to a UTF-8
encoded string even in non-UTF-8 locales (this has been
implemented on Windows since R 2.7.0). The semantics have been
changed slightly: a string containing such escapes is always
stored in UTF-8 (and hence is suitable for portably including
Unicode text in packages).
o New as.raw() method for "tclObj" objects (wish of PR#13758).
o Rd.sty now makes a better job of setting email addresses,
including using a monospaced font.
o textConnection() gains an encoding argument to determine how
input strings with marked encodings will be handled.
o R CMD Rd2pdf is available as a shortcut for R CMD Rd2dvi --pdf.
o R CMD check now checks links where a package is specified
(\link[pkg]{file} or \link[pkg:file]{topic}), if the package is
available. It notes if the package is not available, as in many
cases this is an error in the link.
o identical() gains three logical arguments, which allow for even
more differentiation, notably -0 and 0.
o legend() now can specify the border color of filled boxes, thanks
to a patch from Frederic Schutz.
o Indexing with a vector index to [[ ]] has now been extended to
all recursive types.
o Pairlists may now be assigned as elements of lists. (Lists could
always be created with pairlist elements, but [[<- didn't support
assigning them.)
o The parser now supports C-preprocessor-like #line directives, so
error messages and source references may refer to the original
file rather than an intermediate one.
o New functions findLineNum() and setBreakpoint() work with the
source references to find the location of source lines and set
breakpoints (using trace()) at those lines.
o Namespace importing is more careful about warning on masked
generics, thanks to a patch by Yohan Chalabi.
o detach() now has an argument character.only with the same meaning
as for library() or require().
o available.packages() gains a filters argument for specifying the
filtering operations performed on the packages found in the
repositories. A new built-in "license/FOSS" filter only retains
packages for which installation can proceed solely based on
packages which can be verified as Free or Open Source Software
(FOSS) employing the available license specifications.
o In registering an S3 class by a call to setOldClass(), the data
part (e.g., the object type) required for the class can be
included as one of the superclasses in the Classes argument.
o The argument f to showMethods() can be an expression evaluating
to a generic function, allowing methods to be shown for
non-exported generics and other nonstandard cases.
o sprintf() now supports %o for octal conversions.
o New function Sys.readlink() for information about symbolic links,
including if a file is a symbolic link.
o Package tools has new functions checkRdaFiles() and
resaveRdaFiles() to report on the format of .rda/.RData data
files, and to re-save them in a different compressed format,
including choosing the most compact format available.
A new INSTALL option, --resave-data, makes use of this.
o File ~/.R/config is used in preference to ~/.Rconfig, and these
are now documented in 'R Installation and Administration'.
o Logic operations with complex numbers now work, as they were
always documented to, and as in S.
o arrows() and segments() allow one of x1 or y1 to be omitted to
simplify the specification of vertical or horizontal lines
(suggestion of Tim Hesterberg).
o approxfun() is faster by avoiding repeated NA checks (diagnosis
and patch by Karline Soetaert & Thomas Petzoldt).
o There are the beginnings of a Nynorsk translation by Karl Ove
Hufthammer.
o stripchart() allows par bg to be passed in for the background
colour for pch = 21 (wish of PR#13984).
o New generic function .DollarNames() to enable class authors to
customize completion after the $ extractor.
o load(), save(), dput() and dump() now open a not-yet-open
connection in the appropriate mode (as other functions using
connections directly already did).
REGULAR EXPRESSIONS:
o A different regular expression engine is used for basic and
extended regexps and is also for approximate matching. This is
based on the TRE library of Ville Laurikari, a modified copy of
which is included in the R sources.
This is often faster, especially in a MBCS locale.
Some known differences are that it is less tolerant of invalid
inputs in MBCS locales, and in its interpretation of undefined
(extended) regexps such as "^*". Also, the interpretation of
ranges such as [W-z] in caseless matching is no longer to map the
range to lower case.
This engine may in future be used in 'literal' mode for fixed =
TRUE, and there is a compile-time option in src/main/grep.c to do
so.
o The use of repeated boundary regexps in gsub() and gregexpr() as
warned about in the help page does not work in this engine (it
did in the previous one since 2005).
o Extended (and basic) regexps now support same set of options as
for fixed = TRUE and perl = TRUE, including useBytes and support
for UTF-8-encoded strings in non-UTF-8 locales.
o agrep() now has full support for MBCS locales with a modest speed
penalty. This enables help.search() to use approximate matching
character-wise rather than byte-wise.
o [g]sub use a single-pass algorithm instead of matching twice and
so is usually faster.
o The perl = TRUE versions now work correctly in a non-UTF-8 MBCS
locale, by translating the inputs to UTF-8.
o useBytes = TRUE now inhibits the translation of inputs with
marked encodings.
o strsplit() gains a useBytes argument.
o The algorithm used by strsplit() has been reordered to batch by
elements of split: this can be much faster for fixed = FALSE (as
multiple compilation of regexps is avoided).
o The help pages, including ?regexp, have been updated and should
be consulted for details of the new implementations.
HELP & Rd FILE CHANGES:
o A new dynamic HTML help system is used by default, and may be
controlled using tools::startDynamicHelp(). With this enabled,
HTML help pages will be generated on request, resolving links by
searching through the current .libPaths(). The user may set
options("help.ports") to control which IP port is used by the
server.
o help.start() no longer sets options(htmlhelp = TRUE) (it used to
on Unix but not on Windows). Nor does it on Unix reset the
"browser" option if given an argument of that name.
Arguments update and remote are now available on all platforms:
the default is update = FALSE since the http server will update
the package index at first use.
o help() has a new argument help_type (with default set by the
option of that name) to supersede arguments offline, htmlhelp and
chmhelp (although for now they still work if help_type is unset).
There is a new type, "PDF" to allow offline PDF (rather than
PostScript).
A function offline_help_helper() will be used if this exists in
the workspace or further down the search path, otherwise the
function of that name in the utils namespace is used.
o Plain text help is now used as the fallback for HTML help (as it
always was for Compiled HTML help on Windows).
o It is possible to ask for static HTML pages to be prebuilt _via_
the configure option --enable-prebuilt-html. This may be useful
for those who wish to make HTML help available outside R, e.g. on
a local web site.
o An experimental tag \Sexpr has been added to Rd files, to
evaluate expressions at build, install, or render time.
Currently install time and render time evaluation are supported.
o Tags \if, \ifelse and \out have been added to allow
format-specific (or more general, using \Sexpr) conditional text
in man pages.
o The parse_Rd() parser has been made more tolerant of coding
errors in Rd files: now all syntax errors are reported as
warnings, and an attempt is made to continue parsing.
o parse_Rd() now has an argument fragment (default FALSE) to accept
small fragments of Rd files (so that \Sexpr can output Rd code
which is then parsed).
o parse_Rd() now always converts its input to UTF-8. The Rd2*
rendering functions have a new argument, outputEncoding, which
controls how their output is encoded.
o parse_Rd() no longer includes the newline as part of a "%"-style
comment.
o There have been various bug fixes and code reorganization in the
Rd renderers Rd2HTML, Rd2latex, Rd2txt, and Rd2ex.
All example files are now created with either ASCII or UTF-8
encoding, and the encoding is only marked in the file if there is
any non-UTF-8 code (previously it was marked if the help file had
non-ASCII contents, possibly in other sections).
o print.Rd() now adds necessary escape characters so that printing
and re-parsing an Rd object should produce an equivalent object.
o parse_Rd() was incorrectly handling multiple backslashes in R
code strings, converting 4n+3 backslashes to 2n+1 instead of
2n+2.
o parse_Rd() now recognizes the \var tag within a quoted string in
R-like text.
o parse_Rd() now treats the argument of \command as LaTeX-like,
rather than verbatim.
COMPRESSION:
o New function untar() to list or unpack tar archives, possibly
compressed. This uses either an external tar command or an
internal implementation.
o New function tar() to create (possibly compressed) tar archives.
o New functions memCompress() and memDecompress() for in-memory
compression and decompression.
o bzfile() has a compress argument to select the amount of effort
put into compression when writing.
o New function xzfile() for use with xz-compressed files. (This
can also read files compressed by some versions of lzma.)
o gzfile() looks at the file header and so can now also read
bzip2-ed files and xz-compressed files.
o There are the new options of save(compress = "bzip2") and "xz" to
use bzip2 or xz compression (which will be slower, but can give
substantially smaller files). Argument compression_level gives
finer control over the space/time tradeoffs.
load() can read such saves (but only as from this version of R).
o R CMD INSTALL/check and tools::writePACKAGES accept a wider range
of compressed tar archives. Precisely how wide depends on the
capabilities of the host system's tar command: they almost always
include .tar.bz2 archives, and with modern versions of tar other
forms of compression such as lzma and xz, and arbitrary
extensions.
o R CMD INSTALL has a new option --data-compress to control the
compression used when lazy-loading data. New possibilities are
--data-compress=bzip2 which will give ca 15% better compression
at the expense of slower installation times, and
--data-compress=xz, often giving even better compression on large
datasets at the expense of much longer installation times. (The
latter is used for the recommended packages: it is particularly
effective for survival.)
o file() for open = "", "r" or "rt" will automagically detect
compressed files (from gzip, bzip2 or xz). This means that
compressed files can be specified by file name (rather than _via_
a gzfile() connection) to read.table(), readlines(), scan() and
so on.
o data() can handle compressed text files with extensions
.{txt,tab,csv}.{gz,bz2,xz} .
DEPRECATED & DEFUNCT:
o png(type="cairo1") is defunct: the value is no longer recognized.
o tools::Rd_parse() is defunct (as this version of R uses only Rd
version 2).
o Use of file ~/.Rconf (which was deprecated in favour of
~/.Rconfig in 2004) has finally been removed.
o Bundles of packages are deprecated. See 'Writing R Extensions'
for the steps needed to unbundle a bundle.
o help() arguments offline, htmlhelp and chmhelp are deprecated in
favour of help_type.
o clearNames() (in package stats) is deprecated for unname().
o Basic regular expressions (extended = FALSE) are deprecated in
strsplit, grep and friends. There is a precise POSIX standard
for them, but it is not what recent RE engines implement, and it
seems that in almost all cases package authors intended fixed =
TRUE when using extended = FALSE.
o methods::trySilent() is deprecated in favour of try(silent=TRUE)
or - more efficiently and flexibly - something like
tryCatch(error = function(e) e).
o index.search() is deprecated: there are no longer directories of
types other than help.
INSTALLATION:
o cairo >= 1.2 is now required (1.2.0 was released in July 2006)
for cairo-based graphics devices (which remain optional).
o A suitable iconv() is now required: support for configure option
--without-iconv has been withdrawn (it was deprecated in R
2.5.0).
o Perl is no longer 'essential'. R can be built without it, but
scripts R CMD build, check, Rprof and Sd2d currently require it.
o A system glob function is now essential (a working Sys.glob() has
been assumed since R 2.9.0 at least).
o C99 support for MBCS is now required, and configure option
--disable-mbcs has been withdrawn.
o Having a version of tar capable of automagically detecting
compressed archives is useful for utils::untar(), and so gtar (a
common name for GNU tar) is preferred to tar: set environment
variable TAR to specify a particular tar command.
INTERNATIONALIZATION:
o There is some makefile support for adding/updating translations
in packages: see po/README and 'Writing R Extensions'.
There is support for the use of dngettext for C-level
translations in packages: see 'Writing R Extensions'.
BUG FIXES:
o Assigning an extra 0-length column to a data frame by DF[, "foo"]
<- value now works in most cases (by filling with NAs) or fails.
(It used to give a corrupt data frame.)
o validObject() avoids an error during evaluation in the case of
various incorrect slot definitions.
o n:m now returns a result of type "integer" in a few more boundary
cases.
o The zap.ind argument to printCoefmat() did not usually work as
other code attempted to ensure that non-zero values had a
non-zero representation.
o printCoefmat() formatted groups of columns together, not just the
cs.ind group but also the zap.ind group and a residual group. It
now formats all columns except the cs.ind group separately (and
zaps the zap.ind group column-by-column). The main effect will
be see in the output from print.anova(), as this grouped SS-like
columns in the zap.ind group.
o R_ReplDLLinit() initializes the top-level jump so that some
embedded applications on Windows no longer crash on error.
o identical() failed to take the encoding of character strings into
account, so identical byte patterns are not necessarily identical
strings, and similarly Latin-1 and UTF-8 versions of the same
string differ in byte pattern.
o methods(f) used to warn unnecessarily for an S4 generic f which
had been created based on an existing S3 generic.
o The check for consistent ordering of superclasses was not
ignoring all conditional relations (the symptom was usually
spurious warnings for classes extending "array").
o Trying to assign into a raw vector with an index vector
containing NAs could cause a segfault. Reported by Herv'e Pag`es.
o Rscript could segfault if (by user error) its filename argument
was missing. Reported by Martin Morgan.
o getAnywhere() (and functions that use it, including argument
completion in the console) did not handle special built-in
functions. Reported by Romain Francois.
o order() was missing a PROTECT() call and so could segfault when
called on character data under certain (rare) circumstances
involving marked non-native encodings.
o prettyNum(z, drop0trailing=TRUE) did not work correctly when z
was a complex vector. Consequently, str(z, ...) also did not.
(PR#13985)
o make distclean removed too many files in etc/ if builddir =
srcdir.
o R CMD replaced TEXINPUTS rather than appending to it (as
documented and intended).
o help.start() no longer fails on unix when "browser" is a
function.
o pbeta(x, ..., log.p = TRUE) is sometimes more accurate, e.g., for
very small x.
o Unserializing a pre-2.8 workspace containing pure ASCII character
objects with a Latin-1 or UTF-8 encoding would corrupt the
CHARSXP cache.
|