0s autopkgtest [12:18:00]: starting date and time: 2024-03-26 12:18:00+0000 0s autopkgtest [12:18:00]: git checkout: 4a1cd702 l/adt_testbed: don't blame the testbed for unsolvable build deps 0s autopkgtest [12:18:00]: host juju-7f2275-prod-proposed-migration-environment-4; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.52my27dp/out --timeout-copy=6000 --setup-commands 'dhclient || true; ln -s /dev/null /etc/systemd/system/bluetooth.service; printf "http_proxy=http://squid.internal:3128\nhttps_proxy=http://squid.internal:3128\nno_proxy=127.0.0.1,127.0.1.1,login.ubuntu.com,localhost,localdomain,novalocal,internal,archive.ubuntu.com,ports.ubuntu.com,security.ubuntu.com,ddebs.ubuntu.com,changelogs.ubuntu.com,launchpadlibrarian.net,launchpadcontent.net,launchpad.net,10.24.0.0/24,keystone.ps5.canonical.com,objectstorage.prodstack5.canonical.com\n" >> /etc/environment' --apt-pocket=proposed --apt-upgrade r-cran-matrixstats --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 --env=ADT_TEST_TRIGGERS=r-base/4.3.3-2build1 -- lxd -r lxd-armhf-10.44.124.215 lxd-armhf-10.44.124.215:autopkgtest/ubuntu/noble/armhf 43s autopkgtest [12:18:43]: testbed dpkg architecture: armhf 45s autopkgtest [12:18:45]: testbed apt version: 2.7.12 45s autopkgtest [12:18:45]: @@@@@@@@@@@@@@@@@@@@ test bed setup 47s Get:1 http://ftpmaster.internal/ubuntu noble-proposed InRelease [117 kB] 48s Get:2 http://ftpmaster.internal/ubuntu noble-proposed/main Sources [496 kB] 48s Get:3 http://ftpmaster.internal/ubuntu noble-proposed/universe Sources [4019 kB] 48s Get:4 http://ftpmaster.internal/ubuntu noble-proposed/restricted Sources [8504 B] 48s Get:5 http://ftpmaster.internal/ubuntu noble-proposed/multiverse Sources [56.0 kB] 48s Get:6 http://ftpmaster.internal/ubuntu noble-proposed/main armhf Packages [669 kB] 48s Get:7 http://ftpmaster.internal/ubuntu noble-proposed/main armhf c-n-f Metadata [2492 B] 48s Get:8 http://ftpmaster.internal/ubuntu noble-proposed/restricted armhf Packages [1372 B] 48s Get:9 http://ftpmaster.internal/ubuntu noble-proposed/restricted armhf c-n-f Metadata [116 B] 48s Get:10 http://ftpmaster.internal/ubuntu noble-proposed/universe armhf Packages [4075 kB] 48s Get:11 http://ftpmaster.internal/ubuntu noble-proposed/universe armhf c-n-f Metadata [7776 B] 48s Get:12 http://ftpmaster.internal/ubuntu noble-proposed/multiverse armhf Packages [49.1 kB] 48s Get:13 http://ftpmaster.internal/ubuntu noble-proposed/multiverse armhf c-n-f Metadata [116 B] 56s Fetched 9502 kB in 3s (3716 kB/s) 56s Reading package lists... 62s Get:1 http://ports.ubuntu.com/ubuntu-ports noble-proposed InRelease [117 kB] 62s Get:2 http://ports.ubuntu.com/ubuntu-ports noble-proposed/main armhf Packages [669 kB] 62s Get:3 http://ports.ubuntu.com/ubuntu-ports noble-proposed/main armhf c-n-f Metadata [2492 B] 62s Get:4 http://ports.ubuntu.com/ubuntu-ports noble-proposed/universe armhf Packages [4073 kB] 63s Get:5 http://ports.ubuntu.com/ubuntu-ports noble-proposed/universe armhf c-n-f Metadata [7776 B] 63s Get:6 http://ports.ubuntu.com/ubuntu-ports noble-proposed/restricted armhf Packages [1372 B] 63s Get:7 http://ports.ubuntu.com/ubuntu-ports noble-proposed/restricted armhf c-n-f Metadata [116 B] 63s Get:8 http://ports.ubuntu.com/ubuntu-ports noble-proposed/multiverse armhf Packages [49.1 kB] 63s Get:9 http://ports.ubuntu.com/ubuntu-ports noble-proposed/multiverse armhf c-n-f Metadata [116 B] 69s Fetched 4919 kB in 2s (2750 kB/s) 69s Reading package lists... 77s sh: 1: dhclient: not found 78s tee: /proc/self/fd/2: Permission denied 106s Hit:1 http://ports.ubuntu.com/ubuntu-ports noble-proposed InRelease 106s Hit:2 http://ftpmaster.internal/ubuntu noble InRelease 106s Hit:3 http://ports.ubuntu.com/ubuntu-ports noble InRelease 106s Hit:4 http://ftpmaster.internal/ubuntu noble-updates InRelease 106s Hit:5 http://ports.ubuntu.com/ubuntu-ports noble-updates InRelease 106s Hit:6 http://ftpmaster.internal/ubuntu noble-security InRelease 106s Hit:7 http://ports.ubuntu.com/ubuntu-ports noble-backports InRelease 106s Hit:8 http://ftpmaster.internal/ubuntu noble-proposed InRelease 106s Hit:9 http://ports.ubuntu.com/ubuntu-ports noble-security InRelease 109s Reading package lists... 110s Reading package lists... 110s Building dependency tree... 110s Reading state information... 111s Calculating upgrade... 112s The following packages were automatically installed and are no longer required: 112s linux-headers-6.8.0-11 python3-distutils python3-lib2to3 112s Use 'apt autoremove' to remove them. 113s The following packages will be REMOVED: 113s libapt-pkg6.0 libarchive13 libatm1 libcurl3-gnutls libcurl4 libdb5.3 libelf1 113s libext2fs2 libgdbm-compat4 libgdbm6 libglib2.0-0 libgnutls30 libgpgme11 113s libhogweed6 libmagic1 libnetplan0 libnettle8 libnpth0 libnvme1 libparted2 113s libpcap0.8 libperl5.38 libpng16-16 libpsl5 libreadline8 libreiserfscore0 113s libssl3 libtirpc3 libuv1 linux-headers-6.8.0-11-generic 113s The following NEW packages will be installed: 113s libapt-pkg6.0t64 libarchive13t64 libatm1t64 libcurl3t64-gnutls libcurl4t64 113s libdb5.3t64 libelf1t64 libext2fs2t64 libgdbm-compat4t64 libgdbm6t64 113s libglib2.0-0t64 libgnutls30t64 libgpgme11t64 libhogweed6t64 libmagic1t64 113s libnetplan1 libnettle8t64 libnpth0t64 libnvme1t64 libparted2t64 113s libpcap0.8t64 libperl5.38t64 libpng16-16t64 libpsl5t64 libreadline8t64 113s libreiserfscore0t64 libssl3t64 libtirpc3t64 libuv1t64 linux-headers-6.8.0-20 113s linux-headers-6.8.0-20-generic xdg-user-dirs 113s The following packages have been kept back: 113s multipath-tools 113s The following packages will be upgraded: 113s apparmor apt apt-utils base-files bind9-dnsutils bind9-host bind9-libs 113s binutils binutils-arm-linux-gnueabihf binutils-common bolt bsdextrautils 113s bsdutils btrfs-progs cloud-init coreutils cryptsetup-bin curl dbus dbus-bin 113s dbus-daemon dbus-session-bus-common dbus-system-bus-common dbus-user-session 113s debianutils dhcpcd-base dirmngr dmsetup dpkg dpkg-dev e2fsprogs 113s e2fsprogs-l10n eject fdisk file fonts-ubuntu-console ftp fwupd gawk 113s gcc-13-base gcc-14-base gir1.2-girepository-2.0 gir1.2-glib-2.0 gnupg 113s gnupg-l10n gnupg-utils gpg gpg-agent gpg-wks-client gpgconf gpgsm gpgv 113s groff-base ibverbs-providers inetutils-telnet info initramfs-tools 113s initramfs-tools-bin initramfs-tools-core install-info iproute2 jq keyboxd 113s kmod kpartx krb5-locales libapparmor1 libaudit-common libaudit1 libbinutils 113s libblkid1 libblockdev-crypto3 libblockdev-fs3 libblockdev-loop3 113s libblockdev-mdraid3 libblockdev-nvme3 libblockdev-part3 libblockdev-swap3 113s libblockdev-utils3 libblockdev3 libbpf1 libbrotli1 libbsd0 libc-bin libc6 113s libcap-ng0 libcom-err2 libcryptsetup12 libctf-nobfd0 libctf0 libdbus-1-3 113s libdebconfclient0 libdevmapper1.02.1 libdpkg-perl libevent-core-2.1-7 113s libexpat1 libfdisk1 libfido2-1 libftdi1-2 libfwupd2 libgcc-s1 113s libgirepository-1.0-1 libglib2.0-data libgssapi-krb5-2 libgudev-1.0-0 113s libgusb2 libibverbs1 libjcat1 libjq1 libjson-glib-1.0-0 113s libjson-glib-1.0-common libk5crypto3 libkmod2 libkrb5-3 libkrb5support0 113s libldap-common libldap2 liblocale-gettext-perl liblzma5 libmagic-mgc 113s libmbim-glib4 libmbim-proxy libmm-glib0 libmount1 libnghttp2-14 libnsl2 113s libnss-systemd libpam-modules libpam-modules-bin libpam-runtime 113s libpam-systemd libpam0g libplymouth5 libpolkit-agent-1-0 113s libpolkit-gobject-1-0 libproc2-0 libprotobuf-c1 libpython3-stdlib 113s libpython3.11-minimal libpython3.11-stdlib libpython3.12-minimal 113s libpython3.12-stdlib libqmi-glib5 libqmi-proxy libqrtr-glib0 librtmp1 113s libsasl2-2 libsasl2-modules libsasl2-modules-db libseccomp2 libselinux1 113s libsemanage-common libsemanage2 libsframe1 libslang2 libsmartcols1 113s libsqlite3-0 libss2 libssh-4 libstdc++6 libsystemd-shared libsystemd0 113s libtext-charwidth-perl libtext-iconv-perl libtirpc-common libudev1 113s libudisks2-0 libusb-1.0-0 libuuid1 libvolume-key1 libxml2 libxmlb2 libxmuu1 113s linux-headers-generic locales logsave lshw lsof man-db motd-news-config 113s mount mtr-tiny netplan-generator netplan.io openssh-client openssh-server 113s openssh-sftp-server openssl parted perl perl-base perl-modules-5.38 113s pinentry-curses plymouth plymouth-theme-ubuntu-text procps psmisc 113s python-apt-common python3 python3-apt python3-cryptography python3-dbus 113s python3-distutils python3-gdbm python3-gi python3-lib2to3 python3-markupsafe 113s python3-minimal python3-netplan python3-pkg-resources python3-pyrsistent 113s python3-setuptools python3-typing-extensions python3-yaml python3.11 113s python3.11-minimal python3.12 python3.12-minimal readline-common rsync 113s rsyslog shared-mime-info sudo systemd systemd-dev systemd-resolved 113s systemd-sysv systemd-timesyncd tcpdump telnet tnftp ubuntu-minimal 113s ubuntu-pro-client ubuntu-pro-client-l10n ubuntu-standard udev udisks2 113s usb.ids util-linux uuid-runtime vim-common vim-tiny wget xxd xz-utils zlib1g 114s 246 upgraded, 32 newly installed, 30 to remove and 1 not upgraded. 114s Need to get 109 MB of archives. 114s After this operation, 85.0 MB of additional disk space will be used. 114s Get:1 http://ftpmaster.internal/ubuntu noble-proposed/main armhf motd-news-config all 13ubuntu8 [5098 B] 114s Get:2 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gcc-14-base armhf 14-20240315-1ubuntu1 [47.0 kB] 114s Get:3 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgcc-s1 armhf 14-20240315-1ubuntu1 [41.5 kB] 114s Get:4 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libstdc++6 armhf 14-20240315-1ubuntu1 [714 kB] 114s Get:5 http://ftpmaster.internal/ubuntu noble/main armhf libc6 armhf 2.39-0ubuntu6 [2827 kB] 114s Get:6 http://ftpmaster.internal/ubuntu noble-proposed/main armhf base-files armhf 13ubuntu8 [73.9 kB] 114s Get:7 http://ftpmaster.internal/ubuntu noble-proposed/main armhf bsdutils armhf 1:2.39.3-9ubuntu2 [102 kB] 114s Get:8 http://ftpmaster.internal/ubuntu noble-proposed/main armhf openssl armhf 3.0.13-0ubuntu2 [975 kB] 115s Get:9 http://ftpmaster.internal/ubuntu noble-proposed/main armhf zlib1g armhf 1:1.3.dfsg-3.1ubuntu1 [49.2 kB] 115s Get:10 http://ftpmaster.internal/ubuntu noble-proposed/main armhf librtmp1 armhf 2.4+20151223.gitfa8646d.1-2build6 [51.3 kB] 115s Get:11 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3.12 armhf 3.12.2-4build3 [645 kB] 115s Get:12 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libexpat1 armhf 2.6.1-2 [65.9 kB] 115s Get:13 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3.12-minimal armhf 3.12.2-4build3 [1942 kB] 115s Get:14 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpython3.12-stdlib armhf 3.12.2-4build3 [1906 kB] 115s Get:15 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpython3.12-minimal armhf 3.12.2-4build3 [816 kB] 115s Get:16 http://ftpmaster.internal/ubuntu noble-proposed/main armhf parted armhf 3.6-3.1build2 [39.4 kB] 115s Get:17 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblkid1 armhf 2.39.3-9ubuntu2 [160 kB] 115s Get:18 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libselinux1 armhf 3.5-2ubuntu1 [70.9 kB] 115s Get:19 http://ftpmaster.internal/ubuntu noble-proposed/main armhf systemd-dev all 255.4-1ubuntu5 [103 kB] 115s Get:20 http://ftpmaster.internal/ubuntu noble-proposed/main armhf systemd-timesyncd armhf 255.4-1ubuntu5 [36.0 kB] 115s Get:21 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dbus-session-bus-common all 1.14.10-4ubuntu2 [80.3 kB] 115s Get:22 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libaudit-common all 1:3.1.2-2.1 [5674 B] 115s Get:23 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libcap-ng0 armhf 0.8.4-2build1 [13.5 kB] 115s Get:24 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libaudit1 armhf 1:3.1.2-2.1 [44.3 kB] 115s Get:25 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpam0g armhf 1.5.3-5ubuntu3 [62.0 kB] 115s Get:26 http://ftpmaster.internal/ubuntu noble-proposed/main armhf liblzma5 armhf 5.6.0-0.2 [117 kB] 115s Get:27 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libldap2 armhf 2.6.7+dfsg-1~exp1ubuntu6 [172 kB] 115s Get:28 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libudisks2-0 armhf 2.10.1-6 [143 kB] 115s Get:29 http://ftpmaster.internal/ubuntu noble-proposed/main armhf udisks2 armhf 2.10.1-6 [276 kB] 115s Get:30 http://ftpmaster.internal/ubuntu noble-proposed/main armhf shared-mime-info armhf 2.4-1build1 [470 kB] 116s Get:31 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gir1.2-girepository-2.0 armhf 1.79.1-1ubuntu6 [24.8 kB] 116s Get:32 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gir1.2-glib-2.0 armhf 2.79.3-3ubuntu5 [182 kB] 116s Get:33 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgirepository-1.0-1 armhf 1.79.1-1ubuntu6 [106 kB] 116s Get:34 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-gi armhf 3.47.0-3build1 [219 kB] 116s Get:35 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-dbus armhf 1.3.2-5build2 [94.7 kB] 116s Get:36 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgpgme11t64 armhf 1.18.0-4.1ubuntu3 [120 kB] 116s Get:37 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libvolume-key1 armhf 0.3.12-7build1 [38.4 kB] 116s Get:38 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libnetplan1 armhf 1.0-1 [113 kB] 116s Get:39 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-netplan armhf 1.0-1 [22.5 kB] 116s Get:40 http://ftpmaster.internal/ubuntu noble-proposed/main armhf netplan-generator armhf 1.0-1 [58.7 kB] 116s Get:41 http://ftpmaster.internal/ubuntu noble-proposed/main armhf initramfs-tools-bin armhf 0.142ubuntu23 [20.3 kB] 116s Get:42 http://ftpmaster.internal/ubuntu noble-proposed/main armhf initramfs-tools-core all 0.142ubuntu23 [50.1 kB] 116s Get:43 http://ftpmaster.internal/ubuntu noble/main armhf ubuntu-minimal armhf 1.536build1 [10.7 kB] 116s Get:44 http://ftpmaster.internal/ubuntu noble-proposed/main armhf initramfs-tools all 0.142ubuntu23 [9058 B] 116s Get:45 http://ftpmaster.internal/ubuntu noble-proposed/main armhf netplan.io armhf 1.0-1 [64.3 kB] 116s Get:46 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libxmlb2 armhf 0.3.15-1build1 [57.0 kB] 116s Get:47 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libqrtr-glib0 armhf 1.2.2-1ubuntu3 [15.4 kB] 116s Get:48 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libqmi-glib5 armhf 1.35.2-0ubuntu1 [908 kB] 116s Get:49 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libqmi-proxy armhf 1.35.2-0ubuntu1 [5732 B] 116s Get:50 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpolkit-agent-1-0 armhf 124-1ubuntu1 [15.3 kB] 116s Get:51 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpolkit-gobject-1-0 armhf 124-1ubuntu1 [44.1 kB] 116s Get:52 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libglib2.0-0t64 armhf 2.79.3-3ubuntu5 [1414 kB] 116s Get:53 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libjcat1 armhf 0.2.0-2build2 [30.4 kB] 116s Get:54 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libarchive13t64 armhf 3.7.2-1.1ubuntu2 [330 kB] 116s Get:55 http://ftpmaster.internal/ubuntu noble-proposed/main armhf fwupd armhf 1.9.15-2 [4350 kB] 117s Get:56 http://ftpmaster.internal/ubuntu noble-proposed/main armhf ubuntu-pro-client-l10n armhf 31.2.2 [19.4 kB] 117s Get:57 http://ftpmaster.internal/ubuntu noble-proposed/main armhf ubuntu-pro-client armhf 31.2.2 [216 kB] 117s Get:58 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3.11 armhf 3.11.8-1build4 [589 kB] 117s Get:59 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3.11-minimal armhf 3.11.8-1build4 [1795 kB] 117s Get:60 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpython3.11-minimal armhf 3.11.8-1build4 [826 kB] 117s Get:61 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsasl2-modules-db armhf 2.1.28+dfsg1-5ubuntu1 [19.0 kB] 117s Get:62 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libtext-iconv-perl armhf 1.7-8build2 [12.7 kB] 117s Get:63 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libtext-charwidth-perl armhf 0.04-11build2 [8962 B] 117s Get:64 http://ftpmaster.internal/ubuntu noble-proposed/main armhf perl-base armhf 5.38.2-3.2 [1671 kB] 117s Get:65 http://ftpmaster.internal/ubuntu noble-proposed/main armhf liblocale-gettext-perl armhf 1.07-6ubuntu4 [15.0 kB] 117s Get:66 http://ftpmaster.internal/ubuntu noble-proposed/main armhf perl-modules-5.38 all 5.38.2-3.2 [3110 kB] 118s Get:67 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-gdbm armhf 3.12.2-3ubuntu1.1 [17.1 kB] 118s Get:68 http://ftpmaster.internal/ubuntu noble-proposed/main armhf man-db armhf 2.12.0-3build4 [1196 kB] 118s Get:69 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgdbm6t64 armhf 1.23-5.1 [30.3 kB] 118s Get:70 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgdbm-compat4t64 armhf 1.23-5.1 [6208 B] 118s Get:71 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libperl5.38t64 armhf 5.38.2-3.2 [4101 kB] 119s Get:72 http://ftpmaster.internal/ubuntu noble-proposed/main armhf perl armhf 5.38.2-3.2 [231 kB] 119s Get:73 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libdb5.3t64 armhf 5.3.28+dfsg2-6 [661 kB] 119s Get:74 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpython3.11-stdlib armhf 3.11.8-1build4 [1810 kB] 119s Get:75 http://ftpmaster.internal/ubuntu noble-proposed/main armhf keyboxd armhf 2.4.4-2ubuntu15 [111 kB] 119s Get:76 http://ftpmaster.internal/ubuntu noble/main armhf libnpth0t64 armhf 1.6-3.1 [6940 B] 119s Get:77 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gpgv armhf 2.4.4-2ubuntu15 [224 kB] 120s Get:78 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gpg armhf 2.4.4-2ubuntu15 [524 kB] 120s Get:79 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gpg-wks-client armhf 2.4.4-2ubuntu15 [87.4 kB] 120s Get:80 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gnupg-utils armhf 2.4.4-2ubuntu15 [158 kB] 120s Get:81 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gpg-agent armhf 2.4.4-2ubuntu15 [235 kB] 120s Get:82 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gpgsm armhf 2.4.4-2ubuntu15 [241 kB] 120s Get:83 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libreadline8t64 armhf 8.2-4 [129 kB] 120s Get:84 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gawk armhf 1:5.2.1-2build2 [415 kB] 120s Get:85 http://ftpmaster.internal/ubuntu noble-proposed/main armhf fdisk armhf 2.39.3-9ubuntu2 [135 kB] 120s Get:86 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gpgconf armhf 2.4.4-2ubuntu15 [115 kB] 120s Get:87 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dirmngr armhf 2.4.4-2ubuntu15 [346 kB] 120s Get:88 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gnupg all 2.4.4-2ubuntu15 [359 kB] 120s Get:89 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-apt armhf 2.7.7 [162 kB] 120s Get:90 http://ftpmaster.internal/ubuntu noble-proposed/main armhf apt-utils armhf 2.7.14 [210 kB] 120s Get:91 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libapt-pkg6.0t64 armhf 2.7.14 [986 kB] 120s Get:92 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libnettle8t64 armhf 3.9.1-2.2 [187 kB] 120s Get:93 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libhogweed6t64 armhf 3.9.1-2.2 [187 kB] 120s Get:94 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgnutls30t64 armhf 3.8.3-1.1ubuntu2 [1046 kB] 121s Get:95 http://ftpmaster.internal/ubuntu noble-proposed/main armhf apt armhf 2.7.14 [1368 kB] 121s Get:96 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libcurl3t64-gnutls armhf 8.5.0-2ubuntu8 [290 kB] 121s Get:97 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libfwupd2 armhf 1.9.15-2 [123 kB] 121s Get:98 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpsl5t64 armhf 0.21.2-1.1 [55.7 kB] 121s Get:99 http://ftpmaster.internal/ubuntu noble-proposed/main armhf wget armhf 1.21.4-1ubuntu2 [317 kB] 121s Get:100 http://ftpmaster.internal/ubuntu noble-proposed/main armhf tnftp armhf 20230507-2build1 [98.6 kB] 121s Get:101 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpcap0.8t64 armhf 1.10.4-4.1ubuntu2 [137 kB] 121s Get:102 http://ftpmaster.internal/ubuntu noble-proposed/main armhf tcpdump armhf 4.99.4-3ubuntu2 [425 kB] 122s Get:103 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsystemd-shared armhf 255.4-1ubuntu5 [2009 kB] 122s Get:104 http://ftpmaster.internal/ubuntu noble-proposed/main armhf systemd-resolved armhf 255.4-1ubuntu5 [289 kB] 122s Get:105 http://ftpmaster.internal/ubuntu noble-proposed/main armhf sudo armhf 1.9.15p5-3ubuntu3 [936 kB] 122s Get:106 http://ftpmaster.internal/ubuntu noble-proposed/main armhf rsync armhf 3.2.7-1build1 [413 kB] 122s Get:107 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-cryptography armhf 41.0.7-4build2 [788 kB] 122s Get:108 http://ftpmaster.internal/ubuntu noble-proposed/main armhf openssh-sftp-server armhf 1:9.6p1-3ubuntu11 [35.5 kB] 122s Get:109 http://ftpmaster.internal/ubuntu noble-proposed/main armhf openssh-client armhf 1:9.6p1-3ubuntu11 [890 kB] 123s Get:110 http://ftpmaster.internal/ubuntu noble-proposed/main armhf openssh-server armhf 1:9.6p1-3ubuntu11 [503 kB] 123s Get:111 http://ftpmaster.internal/ubuntu noble-proposed/main armhf linux-headers-6.8.0-20 all 6.8.0-20.20 [13.6 MB] 125s Get:112 http://ftpmaster.internal/ubuntu noble-proposed/main armhf linux-headers-6.8.0-20-generic armhf 6.8.0-20.20 [1287 kB] 125s Get:113 http://ftpmaster.internal/ubuntu noble-proposed/main armhf linux-headers-generic armhf 6.8.0-20.20+1 [9610 B] 125s Get:114 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libssl3t64 armhf 3.0.13-0ubuntu2 [1558 kB] 125s Get:115 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libudev1 armhf 255.4-1ubuntu5 [166 kB] 126s Get:116 http://ftpmaster.internal/ubuntu noble-proposed/main armhf systemd armhf 255.4-1ubuntu5 [3502 kB] 126s Get:117 http://ftpmaster.internal/ubuntu noble-proposed/main armhf udev armhf 255.4-1ubuntu5 [1852 kB] 126s Get:118 http://ftpmaster.internal/ubuntu noble-proposed/main armhf systemd-sysv armhf 255.4-1ubuntu5 [11.9 kB] 126s Get:119 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libnss-systemd armhf 255.4-1ubuntu5 [148 kB] 126s Get:120 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpam-systemd armhf 255.4-1ubuntu5 [216 kB] 126s Get:121 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsystemd0 armhf 255.4-1ubuntu5 [410 kB] 126s Get:122 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpam-modules-bin armhf 1.5.3-5ubuntu3 [47.0 kB] 126s Get:123 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpam-modules armhf 1.5.3-5ubuntu3 [261 kB] 126s Get:124 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpam-runtime all 1.5.3-5ubuntu3 [40.8 kB] 126s Get:125 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dbus-user-session armhf 1.14.10-4ubuntu2 [9962 B] 126s Get:126 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libapparmor1 armhf 4.0.0-beta3-0ubuntu2 [45.0 kB] 126s Get:127 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dbus-bin armhf 1.14.10-4ubuntu2 [37.1 kB] 126s Get:128 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dbus-system-bus-common all 1.14.10-4ubuntu2 [81.5 kB] 127s Get:129 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dbus armhf 1.14.10-4ubuntu2 [28.1 kB] 127s Get:130 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dbus-daemon armhf 1.14.10-4ubuntu2 [109 kB] 127s Get:131 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libdbus-1-3 armhf 1.14.10-4ubuntu2 [190 kB] 127s Get:132 http://ftpmaster.internal/ubuntu noble-proposed/main armhf kmod armhf 31+20240202-2ubuntu4 [91.8 kB] 127s Get:133 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libkmod2 armhf 31+20240202-2ubuntu4 [44.9 kB] 127s Get:134 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libmount1 armhf 2.39.3-9ubuntu2 [171 kB] 127s Get:135 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libseccomp2 armhf 2.5.5-1ubuntu2 [49.5 kB] 127s Get:136 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libuuid1 armhf 2.39.3-9ubuntu2 [34.4 kB] 127s Get:137 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libcryptsetup12 armhf 2:2.7.0-1ubuntu2 [238 kB] 127s Get:138 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libfdisk1 armhf 2.39.3-9ubuntu2 [196 kB] 127s Get:139 http://ftpmaster.internal/ubuntu noble-proposed/main armhf mount armhf 2.39.3-9ubuntu2 [134 kB] 127s Get:140 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libdevmapper1.02.1 armhf 2:1.02.185-3ubuntu2 [135 kB] 127s Get:141 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libparted2t64 armhf 3.6-3.1build2 [143 kB] 127s Get:142 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsqlite3-0 armhf 3.45.1-1ubuntu1 [599 kB] 127s Get:143 http://ftpmaster.internal/ubuntu noble-proposed/main armhf pinentry-curses armhf 1.2.1-3ubuntu4 [36.7 kB] 127s Get:144 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsmartcols1 armhf 2.39.3-9ubuntu2 [117 kB] 127s Get:145 http://ftpmaster.internal/ubuntu noble-proposed/main armhf readline-common all 8.2-4 [56.4 kB] 127s Get:146 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-yaml armhf 6.0.1-2build1 [117 kB] 127s Get:147 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python-apt-common all 2.7.7 [19.8 kB] 127s Get:148 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-setuptools all 68.1.2-2ubuntu1 [396 kB] 127s Get:149 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-pkg-resources all 68.1.2-2ubuntu1 [168 kB] 127s Get:150 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dpkg armhf 1.22.6ubuntu4 [1229 kB] 127s Get:151 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-minimal armhf 3.12.2-0ubuntu1 [27.1 kB] 127s Get:152 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3 armhf 3.12.2-0ubuntu1 [24.1 kB] 127s Get:153 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpython3-stdlib armhf 3.12.2-0ubuntu1 [9802 B] 127s Get:154 http://ftpmaster.internal/ubuntu noble-proposed/main armhf bsdextrautils armhf 2.39.3-9ubuntu2 [78.7 kB] 127s Get:155 http://ftpmaster.internal/ubuntu noble-proposed/main armhf groff-base armhf 1.23.0-3build1 [946 kB] 127s Get:156 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsasl2-2 armhf 2.1.28+dfsg1-5ubuntu1 [49.7 kB] 127s Get:157 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-utils3 armhf 3.1.0-1build1 [16.9 kB] 127s Get:158 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-crypto3 armhf 3.1.0-1build1 [20.3 kB] 127s Get:159 http://ftpmaster.internal/ubuntu noble-proposed/main armhf logsave armhf 1.47.0-2.4~exp1ubuntu2 [21.9 kB] 127s Get:160 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dhcpcd-base armhf 1:10.0.6-1ubuntu2 [186 kB] 127s Get:161 http://ftpmaster.internal/ubuntu noble-proposed/main armhf eject armhf 2.39.3-9ubuntu2 [43.2 kB] 127s Get:162 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libbpf1 armhf 1:1.3.0-2build1 [146 kB] 127s Get:163 http://ftpmaster.internal/ubuntu noble-proposed/main armhf iproute2 armhf 6.1.0-1ubuntu5 [1060 kB] 128s Get:164 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libelf1t64 armhf 0.190-1.1build2 [49.9 kB] 128s Get:165 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libtirpc-common all 1.3.4+ds-1.1 [8018 B] 128s Get:166 http://ftpmaster.internal/ubuntu noble-proposed/main armhf lsof armhf 4.95.0-1build2 [248 kB] 128s Get:167 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libnsl2 armhf 1.3.0-3build2 [36.5 kB] 128s Get:168 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgssapi-krb5-2 armhf 1.20.1-6ubuntu1 [119 kB] 128s Get:169 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libkrb5-3 armhf 1.20.1-6ubuntu1 [320 kB] 128s Get:170 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libkrb5support0 armhf 1.20.1-6ubuntu1 [31.5 kB] 128s Get:171 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libk5crypto3 armhf 1.20.1-6ubuntu1 [78.6 kB] 128s Get:172 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libcom-err2 armhf 1.47.0-2.4~exp1ubuntu2 [21.9 kB] 128s Get:173 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libtirpc3t64 armhf 1.3.4+ds-1.1 [73.2 kB] 128s Get:174 http://ftpmaster.internal/ubuntu noble/main armhf libc-bin armhf 2.39-0ubuntu6 [530 kB] 128s Get:175 http://ftpmaster.internal/ubuntu noble/main armhf locales all 2.39-0ubuntu6 [4232 kB] 128s Get:176 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libproc2-0 armhf 2:4.0.4-4ubuntu2 [49.0 kB] 128s Get:177 http://ftpmaster.internal/ubuntu noble-proposed/main armhf procps armhf 2:4.0.4-4ubuntu2 [700 kB] 128s Get:178 http://ftpmaster.internal/ubuntu noble-proposed/main armhf vim-tiny armhf 2:9.1.0016-1ubuntu6 [665 kB] 129s Get:179 http://ftpmaster.internal/ubuntu noble-proposed/main armhf vim-common all 2:9.1.0016-1ubuntu6 [385 kB] 129s Get:180 http://ftpmaster.internal/ubuntu noble-proposed/main armhf e2fsprogs-l10n all 1.47.0-2.4~exp1ubuntu2 [5996 B] 129s Get:181 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-fs3 armhf 3.1.0-1build1 [34.4 kB] 129s Get:182 http://ftpmaster.internal/ubuntu noble/main armhf libreiserfscore0t64 armhf 1:3.6.27-7.1 [66.2 kB] 129s Get:183 http://ftpmaster.internal/ubuntu noble-proposed/main armhf btrfs-progs armhf 6.6.3-1.1build1 [852 kB] 129s Get:184 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libext2fs2t64 armhf 1.47.0-2.4~exp1ubuntu2 [201 kB] 129s Get:185 http://ftpmaster.internal/ubuntu noble-proposed/main armhf e2fsprogs armhf 1.47.0-2.4~exp1ubuntu2 [571 kB] 129s Get:186 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-loop3 armhf 3.1.0-1build1 [6502 B] 129s Get:187 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-mdraid3 armhf 3.1.0-1build1 [13.3 kB] 129s Get:188 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-nvme3 armhf 3.1.0-1build1 [17.5 kB] 129s Get:189 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libnvme1t64 armhf 1.8-3 [67.5 kB] 129s Get:190 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-part3 armhf 3.1.0-1build1 [16.4 kB] 129s Get:191 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-swap3 armhf 3.1.0-1build1 [8894 B] 129s Get:192 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev3 armhf 3.1.0-1build1 [42.9 kB] 129s Get:193 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgudev-1.0-0 armhf 1:238-3ubuntu2 [13.6 kB] 129s Get:194 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libxml2 armhf 2.9.14+dfsg-1.3ubuntu2 [595 kB] 129s Get:195 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libmbim-proxy armhf 1.31.2-0ubuntu2 [5748 B] 129s Get:196 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libmbim-glib4 armhf 1.31.2-0ubuntu2 [216 kB] 129s Get:197 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libjson-glib-1.0-common all 1.8.0-2build1 [4210 B] 129s Get:198 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libjson-glib-1.0-0 armhf 1.8.0-2build1 [61.2 kB] 129s Get:199 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libusb-1.0-0 armhf 2:1.0.27-1 [48.7 kB] 129s Get:200 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgusb2 armhf 0.4.8-1build1 [34.6 kB] 129s Get:201 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libmm-glib0 armhf 1.23.4-0ubuntu1 [214 kB] 129s Get:202 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libprotobuf-c1 armhf 1.4.1-1ubuntu3 [17.7 kB] 129s Get:203 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libbrotli1 armhf 1.1.0-2build1 [319 kB] 130s Get:204 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libnghttp2-14 armhf 1.59.0-1build1 [68.1 kB] 130s Get:205 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libssh-4 armhf 0.10.6-2build1 [169 kB] 130s Get:206 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libibverbs1 armhf 50.0-2build1 [57.9 kB] 130s Get:207 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libfido2-1 armhf 1.14.0-1build1 [75.8 kB] 130s Get:208 http://ftpmaster.internal/ubuntu noble-proposed/main armhf coreutils armhf 9.4-3ubuntu3 [1280 kB] 130s Get:209 http://ftpmaster.internal/ubuntu noble/main armhf debianutils armhf 5.17 [88.9 kB] 130s Get:210 http://ftpmaster.internal/ubuntu noble-proposed/main armhf util-linux armhf 2.39.3-9ubuntu2 [1216 kB] 130s Get:211 http://ftpmaster.internal/ubuntu noble-proposed/main armhf curl armhf 8.5.0-2ubuntu8 [219 kB] 130s Get:212 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libcurl4t64 armhf 8.5.0-2ubuntu8 [296 kB] 130s Get:213 http://ftpmaster.internal/ubuntu noble-proposed/main armhf file armhf 1:5.45-3 [21.1 kB] 130s Get:214 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libmagic-mgc armhf 1:5.45-3 [307 kB] 130s Get:215 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libmagic1t64 armhf 1:5.45-3 [81.4 kB] 130s Get:216 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libplymouth5 armhf 24.004.60-1ubuntu6 [140 kB] 130s Get:217 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpng16-16t64 armhf 1.6.43-3 [166 kB] 130s Get:218 http://ftpmaster.internal/ubuntu noble-proposed/main armhf bind9-host armhf 1:9.18.24-0ubuntu3 [47.4 kB] 130s Get:219 http://ftpmaster.internal/ubuntu noble-proposed/main armhf bind9-dnsutils armhf 1:9.18.24-0ubuntu3 [149 kB] 130s Get:220 http://ftpmaster.internal/ubuntu noble-proposed/main armhf bind9-libs armhf 1:9.18.24-0ubuntu3 [1148 kB] 131s Get:221 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libuv1t64 armhf 1.48.0-1.1 [82.9 kB] 131s Get:222 http://ftpmaster.internal/ubuntu noble-proposed/main armhf uuid-runtime armhf 2.39.3-9ubuntu2 [41.7 kB] 131s Get:223 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libdebconfclient0 armhf 0.271ubuntu2 [10.8 kB] 131s Get:224 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsemanage-common all 3.5-1build4 [10.1 kB] 131s Get:225 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsemanage2 armhf 3.5-1build4 [84.5 kB] 131s Get:226 http://ftpmaster.internal/ubuntu noble-proposed/main armhf install-info armhf 7.1-3build1 [60.5 kB] 131s Get:227 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gcc-13-base armhf 13.2.0-21ubuntu1 [48.3 kB] 131s Get:228 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libss2 armhf 1.47.0-2.4~exp1ubuntu2 [14.7 kB] 131s Get:229 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dmsetup armhf 2:1.02.185-3ubuntu2 [81.1 kB] 131s Get:230 http://ftpmaster.internal/ubuntu noble-proposed/main armhf krb5-locales all 1.20.1-6ubuntu1 [13.8 kB] 131s Get:231 http://ftpmaster.internal/ubuntu noble/main armhf libbsd0 armhf 0.12.1-1 [36.6 kB] 131s Get:232 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libglib2.0-data all 2.79.3-3ubuntu5 [46.6 kB] 131s Get:233 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libslang2 armhf 2.3.3-3build1 [478 kB] 131s Get:234 http://ftpmaster.internal/ubuntu noble-proposed/main armhf rsyslog armhf 8.2312.0-3ubuntu7 [460 kB] 131s Get:235 http://ftpmaster.internal/ubuntu noble/main armhf xdg-user-dirs armhf 0.18-1 [17.3 kB] 131s Get:236 http://ftpmaster.internal/ubuntu noble-proposed/main armhf xxd armhf 2:9.1.0016-1ubuntu6 [62.5 kB] 131s Get:237 http://ftpmaster.internal/ubuntu noble-proposed/main armhf apparmor armhf 4.0.0-beta3-0ubuntu2 [562 kB] 131s Get:238 http://ftpmaster.internal/ubuntu noble-proposed/main armhf ftp all 20230507-2build1 [4724 B] 131s Get:239 http://ftpmaster.internal/ubuntu noble-proposed/main armhf inetutils-telnet armhf 2:2.5-3ubuntu3 [90.7 kB] 131s Get:240 http://ftpmaster.internal/ubuntu noble-proposed/main armhf info armhf 7.1-3build1 [127 kB] 131s Get:241 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libxmuu1 armhf 2:1.1.3-3build1 [8004 B] 131s Get:242 http://ftpmaster.internal/ubuntu noble-proposed/main armhf lshw armhf 02.19.git.2021.06.19.996aaad9c7-2build2 [310 kB] 131s Get:243 http://ftpmaster.internal/ubuntu noble-proposed/main armhf mtr-tiny armhf 0.95-1.1build1 [51.7 kB] 131s Get:244 http://ftpmaster.internal/ubuntu noble-proposed/main armhf plymouth-theme-ubuntu-text armhf 24.004.60-1ubuntu6 [9818 B] 131s Get:245 http://ftpmaster.internal/ubuntu noble-proposed/main armhf plymouth armhf 24.004.60-1ubuntu6 [142 kB] 131s Get:246 http://ftpmaster.internal/ubuntu noble-proposed/main armhf psmisc armhf 23.7-1 [176 kB] 131s Get:247 http://ftpmaster.internal/ubuntu noble-proposed/main armhf telnet all 0.17+2.5-3ubuntu3 [3682 B] 131s Get:248 http://ftpmaster.internal/ubuntu noble-proposed/main armhf xz-utils armhf 5.6.0-0.2 [271 kB] 131s Get:249 http://ftpmaster.internal/ubuntu noble/main armhf ubuntu-standard armhf 1.536build1 [10.7 kB] 131s Get:250 http://ftpmaster.internal/ubuntu noble-proposed/main armhf usb.ids all 2024.03.18-1 [223 kB] 131s Get:251 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libctf-nobfd0 armhf 2.42-4ubuntu1 [88.0 kB] 131s Get:252 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libctf0 armhf 2.42-4ubuntu1 [87.7 kB] 131s Get:253 http://ftpmaster.internal/ubuntu noble-proposed/main armhf binutils-arm-linux-gnueabihf armhf 2.42-4ubuntu1 [2925 kB] 131s Get:254 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libbinutils armhf 2.42-4ubuntu1 [464 kB] 131s Get:255 http://ftpmaster.internal/ubuntu noble-proposed/main armhf binutils armhf 2.42-4ubuntu1 [3078 B] 131s Get:256 http://ftpmaster.internal/ubuntu noble-proposed/main armhf binutils-common armhf 2.42-4ubuntu1 [217 kB] 131s Get:257 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsframe1 armhf 2.42-4ubuntu1 [13.1 kB] 131s Get:258 http://ftpmaster.internal/ubuntu noble-proposed/main armhf bolt armhf 0.9.6-2build1 [138 kB] 131s Get:259 http://ftpmaster.internal/ubuntu noble-proposed/main armhf cryptsetup-bin armhf 2:2.7.0-1ubuntu2 [214 kB] 131s Get:260 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dpkg-dev all 1.22.6ubuntu4 [1074 kB] 131s Get:261 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libdpkg-perl all 1.22.6ubuntu4 [268 kB] 131s Get:262 http://ftpmaster.internal/ubuntu noble/main armhf fonts-ubuntu-console all 0.869+git20240321-0ubuntu1 [18.7 kB] 131s Get:263 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gnupg-l10n all 2.4.4-2ubuntu15 [65.8 kB] 131s Get:264 http://ftpmaster.internal/ubuntu noble-proposed/main armhf ibverbs-providers armhf 50.0-2build1 [27.4 kB] 131s Get:265 http://ftpmaster.internal/ubuntu noble-proposed/main armhf jq armhf 1.7.1-3 [65.2 kB] 131s Get:266 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libjq1 armhf 1.7.1-3 [156 kB] 131s Get:267 http://ftpmaster.internal/ubuntu noble/main armhf libatm1t64 armhf 1:2.5.1-5.1 [20.0 kB] 131s Get:268 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libevent-core-2.1-7 armhf 2.1.12-stable-9build1 [82.3 kB] 131s Get:269 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libftdi1-2 armhf 1.5-6build4 [25.7 kB] 131s Get:270 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libldap-common all 2.6.7+dfsg-1~exp1ubuntu6 [31.3 kB] 132s Get:271 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsasl2-modules armhf 2.1.28+dfsg1-5ubuntu1 [61.3 kB] 132s Get:272 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-distutils all 3.12.2-3ubuntu1.1 [133 kB] 132s Get:273 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-lib2to3 all 3.12.2-3ubuntu1.1 [79.1 kB] 132s Get:274 http://ftpmaster.internal/ubuntu noble/main armhf python3-markupsafe armhf 2.1.5-1build1 [12.1 kB] 132s Get:275 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-pyrsistent armhf 0.20.0-1build1 [53.0 kB] 132s Get:276 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-typing-extensions all 4.10.0-1 [60.7 kB] 132s Get:277 http://ftpmaster.internal/ubuntu noble/main armhf cloud-init all 24.1.2-0ubuntu1 [597 kB] 132s Get:278 http://ftpmaster.internal/ubuntu noble-proposed/main armhf kpartx armhf 0.9.4-5ubuntu6 [31.5 kB] 152s Preconfiguring packages ... 153s Fetched 109 MB in 18s (6006 kB/s) 153s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58620 files and directories currently installed.) 153s Preparing to unpack .../motd-news-config_13ubuntu8_all.deb ... 153s Unpacking motd-news-config (13ubuntu8) over (13ubuntu7) ... 153s Preparing to unpack .../gcc-14-base_14-20240315-1ubuntu1_armhf.deb ... 153s Unpacking gcc-14-base:armhf (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 153s Setting up gcc-14-base:armhf (14-20240315-1ubuntu1) ... 153s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58620 files and directories currently installed.) 153s Preparing to unpack .../libgcc-s1_14-20240315-1ubuntu1_armhf.deb ... 153s Unpacking libgcc-s1:armhf (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 153s Setting up libgcc-s1:armhf (14-20240315-1ubuntu1) ... 153s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58620 files and directories currently installed.) 153s Preparing to unpack .../libstdc++6_14-20240315-1ubuntu1_armhf.deb ... 153s Unpacking libstdc++6:armhf (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 153s Setting up libstdc++6:armhf (14-20240315-1ubuntu1) ... 153s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58620 files and directories currently installed.) 153s Preparing to unpack .../libc6_2.39-0ubuntu6_armhf.deb ... 154s Unpacking libc6:armhf (2.39-0ubuntu6) over (2.39-0ubuntu2) ... 154s Setting up libc6:armhf (2.39-0ubuntu6) ... 155s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58620 files and directories currently installed.) 155s Preparing to unpack .../base-files_13ubuntu8_armhf.deb ... 155s Unpacking base-files (13ubuntu8) over (13ubuntu7) ... 155s Setting up base-files (13ubuntu8) ... 157s motd-news.service is a disabled or a static unit not running, not starting it. 157s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58620 files and directories currently installed.) 157s Preparing to unpack .../bsdutils_1%3a2.39.3-9ubuntu2_armhf.deb ... 157s Unpacking bsdutils (1:2.39.3-9ubuntu2) over (1:2.39.3-6ubuntu2) ... 157s Setting up bsdutils (1:2.39.3-9ubuntu2) ... 157s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58620 files and directories currently installed.) 157s Preparing to unpack .../openssl_3.0.13-0ubuntu2_armhf.deb ... 157s Unpacking openssl (3.0.13-0ubuntu2) over (3.0.10-1ubuntu4) ... 157s Preparing to unpack .../zlib1g_1%3a1.3.dfsg-3.1ubuntu1_armhf.deb ... 157s Unpacking zlib1g:armhf (1:1.3.dfsg-3.1ubuntu1) over (1:1.3.dfsg-3ubuntu1) ... 157s Setting up zlib1g:armhf (1:1.3.dfsg-3.1ubuntu1) ... 157s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58620 files and directories currently installed.) 157s Preparing to unpack .../0-librtmp1_2.4+20151223.gitfa8646d.1-2build6_armhf.deb ... 157s Unpacking librtmp1:armhf (2.4+20151223.gitfa8646d.1-2build6) over (2.4+20151223.gitfa8646d.1-2build4) ... 157s Preparing to unpack .../1-python3.12_3.12.2-4build3_armhf.deb ... 157s Unpacking python3.12 (3.12.2-4build3) over (3.12.2-1) ... 158s Preparing to unpack .../2-libexpat1_2.6.1-2_armhf.deb ... 158s Unpacking libexpat1:armhf (2.6.1-2) over (2.6.0-1) ... 158s Preparing to unpack .../3-python3.12-minimal_3.12.2-4build3_armhf.deb ... 158s Unpacking python3.12-minimal (3.12.2-4build3) over (3.12.2-1) ... 158s Preparing to unpack .../4-libpython3.12-stdlib_3.12.2-4build3_armhf.deb ... 158s Unpacking libpython3.12-stdlib:armhf (3.12.2-4build3) over (3.12.2-1) ... 158s Preparing to unpack .../5-libpython3.12-minimal_3.12.2-4build3_armhf.deb ... 158s Unpacking libpython3.12-minimal:armhf (3.12.2-4build3) over (3.12.2-1) ... 158s Preparing to unpack .../6-parted_3.6-3.1build2_armhf.deb ... 159s Unpacking parted (3.6-3.1build2) over (3.6-3) ... 159s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58618 files and directories currently installed.) 159s Removing libparted2:armhf (3.6-3) ... 159s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58612 files and directories currently installed.) 159s Preparing to unpack .../libblkid1_2.39.3-9ubuntu2_armhf.deb ... 159s Unpacking libblkid1:armhf (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 159s Setting up libblkid1:armhf (2.39.3-9ubuntu2) ... 159s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58612 files and directories currently installed.) 159s Preparing to unpack .../libselinux1_3.5-2ubuntu1_armhf.deb ... 159s Unpacking libselinux1:armhf (3.5-2ubuntu1) over (3.5-2build1) ... 159s Setting up libselinux1:armhf (3.5-2ubuntu1) ... 159s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58612 files and directories currently installed.) 159s Preparing to unpack .../systemd-dev_255.4-1ubuntu5_all.deb ... 159s Unpacking systemd-dev (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 159s Preparing to unpack .../systemd-timesyncd_255.4-1ubuntu5_armhf.deb ... 159s Unpacking systemd-timesyncd (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 159s Preparing to unpack .../dbus-session-bus-common_1.14.10-4ubuntu2_all.deb ... 159s Unpacking dbus-session-bus-common (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 159s Preparing to unpack .../libaudit-common_1%3a3.1.2-2.1_all.deb ... 159s Unpacking libaudit-common (1:3.1.2-2.1) over (1:3.1.2-2) ... 159s Setting up libaudit-common (1:3.1.2-2.1) ... 159s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58612 files and directories currently installed.) 159s Preparing to unpack .../libcap-ng0_0.8.4-2build1_armhf.deb ... 159s Unpacking libcap-ng0:armhf (0.8.4-2build1) over (0.8.4-2) ... 160s Setting up libcap-ng0:armhf (0.8.4-2build1) ... 160s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58612 files and directories currently installed.) 160s Preparing to unpack .../libaudit1_1%3a3.1.2-2.1_armhf.deb ... 160s Unpacking libaudit1:armhf (1:3.1.2-2.1) over (1:3.1.2-2) ... 160s Setting up libaudit1:armhf (1:3.1.2-2.1) ... 160s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58612 files and directories currently installed.) 160s Preparing to unpack .../libpam0g_1.5.3-5ubuntu3_armhf.deb ... 160s Unpacking libpam0g:armhf (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 160s Setting up libpam0g:armhf (1.5.3-5ubuntu3) ... 160s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58612 files and directories currently installed.) 160s Preparing to unpack .../liblzma5_5.6.0-0.2_armhf.deb ... 160s Unpacking liblzma5:armhf (5.6.0-0.2) over (5.4.5-0.3) ... 160s Setting up liblzma5:armhf (5.6.0-0.2) ... 160s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58612 files and directories currently installed.) 160s Preparing to unpack .../0-libldap2_2.6.7+dfsg-1~exp1ubuntu6_armhf.deb ... 160s Unpacking libldap2:armhf (2.6.7+dfsg-1~exp1ubuntu6) over (2.6.7+dfsg-1~exp1ubuntu1) ... 160s Preparing to unpack .../1-libudisks2-0_2.10.1-6_armhf.deb ... 160s Unpacking libudisks2-0:armhf (2.10.1-6) over (2.10.1-1ubuntu2) ... 161s Preparing to unpack .../2-udisks2_2.10.1-6_armhf.deb ... 161s Unpacking udisks2 (2.10.1-6) over (2.10.1-1ubuntu2) ... 161s Preparing to unpack .../3-shared-mime-info_2.4-1build1_armhf.deb ... 161s Unpacking shared-mime-info (2.4-1build1) over (2.4-1) ... 161s Preparing to unpack .../4-gir1.2-girepository-2.0_1.79.1-1ubuntu6_armhf.deb ... 161s Unpacking gir1.2-girepository-2.0:armhf (1.79.1-1ubuntu6) over (1.79.1-1) ... 161s Preparing to unpack .../5-gir1.2-glib-2.0_2.79.3-3ubuntu5_armhf.deb ... 161s Unpacking gir1.2-glib-2.0:armhf (2.79.3-3ubuntu5) over (2.79.2-1~ubuntu1) ... 161s Preparing to unpack .../6-libgirepository-1.0-1_1.79.1-1ubuntu6_armhf.deb ... 161s Unpacking libgirepository-1.0-1:armhf (1.79.1-1ubuntu6) over (1.79.1-1) ... 161s Preparing to unpack .../7-python3-gi_3.47.0-3build1_armhf.deb ... 162s Unpacking python3-gi (3.47.0-3build1) over (3.47.0-3) ... 162s Preparing to unpack .../8-python3-dbus_1.3.2-5build2_armhf.deb ... 162s Unpacking python3-dbus (1.3.2-5build2) over (1.3.2-5build1) ... 162s dpkg: libgpgme11:armhf: dependency problems, but removing anyway as you requested: 162s libvolume-key1:armhf depends on libgpgme11 (>= 1.4.1). 162s libjcat1:armhf depends on libgpgme11 (>= 1.2.0). 162s 162s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58609 files and directories currently installed.) 162s Removing libgpgme11:armhf (1.18.0-4ubuntu1) ... 162s Selecting previously unselected package libgpgme11t64:armhf. 162s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58603 files and directories currently installed.) 162s Preparing to unpack .../00-libgpgme11t64_1.18.0-4.1ubuntu3_armhf.deb ... 162s Unpacking libgpgme11t64:armhf (1.18.0-4.1ubuntu3) ... 162s Preparing to unpack .../01-libvolume-key1_0.3.12-7build1_armhf.deb ... 162s Unpacking libvolume-key1:armhf (0.3.12-7build1) over (0.3.12-5build2) ... 162s Selecting previously unselected package libnetplan1:armhf. 162s Preparing to unpack .../02-libnetplan1_1.0-1_armhf.deb ... 162s Unpacking libnetplan1:armhf (1.0-1) ... 162s Preparing to unpack .../03-python3-netplan_1.0-1_armhf.deb ... 162s Unpacking python3-netplan (1.0-1) over (0.107.1-3) ... 162s Preparing to unpack .../04-netplan-generator_1.0-1_armhf.deb ... 162s Adding 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 162s Unpacking netplan-generator (1.0-1) over (0.107.1-3) ... 162s Preparing to unpack .../05-initramfs-tools-bin_0.142ubuntu23_armhf.deb ... 162s Unpacking initramfs-tools-bin (0.142ubuntu23) over (0.142ubuntu20) ... 163s Preparing to unpack .../06-initramfs-tools-core_0.142ubuntu23_all.deb ... 163s Unpacking initramfs-tools-core (0.142ubuntu23) over (0.142ubuntu20) ... 163s Preparing to unpack .../07-ubuntu-minimal_1.536build1_armhf.deb ... 163s Unpacking ubuntu-minimal (1.536build1) over (1.536) ... 163s Preparing to unpack .../08-initramfs-tools_0.142ubuntu23_all.deb ... 163s Unpacking initramfs-tools (0.142ubuntu23) over (0.142ubuntu20) ... 163s Preparing to unpack .../09-netplan.io_1.0-1_armhf.deb ... 163s Unpacking netplan.io (1.0-1) over (0.107.1-3) ... 163s Preparing to unpack .../10-libxmlb2_0.3.15-1build1_armhf.deb ... 163s Unpacking libxmlb2:armhf (0.3.15-1build1) over (0.3.15-1) ... 163s Preparing to unpack .../11-libqrtr-glib0_1.2.2-1ubuntu3_armhf.deb ... 163s Unpacking libqrtr-glib0:armhf (1.2.2-1ubuntu3) over (1.2.2-1ubuntu2) ... 163s Preparing to unpack .../12-libqmi-glib5_1.35.2-0ubuntu1_armhf.deb ... 163s Unpacking libqmi-glib5:armhf (1.35.2-0ubuntu1) over (1.34.0-2) ... 163s Preparing to unpack .../13-libqmi-proxy_1.35.2-0ubuntu1_armhf.deb ... 163s Unpacking libqmi-proxy (1.35.2-0ubuntu1) over (1.34.0-2) ... 163s Preparing to unpack .../14-libpolkit-agent-1-0_124-1ubuntu1_armhf.deb ... 163s Unpacking libpolkit-agent-1-0:armhf (124-1ubuntu1) over (124-1) ... 163s Preparing to unpack .../15-libpolkit-gobject-1-0_124-1ubuntu1_armhf.deb ... 163s Unpacking libpolkit-gobject-1-0:armhf (124-1ubuntu1) over (124-1) ... 163s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58617 files and directories currently installed.) 163s Removing libnetplan0:armhf (0.107.1-3) ... 163s dpkg: libglib2.0-0:armhf: dependency problems, but removing anyway as you requested: 163s libmm-glib0:armhf depends on libglib2.0-0 (>= 2.62.0). 163s libmbim-proxy depends on libglib2.0-0 (>= 2.56). 163s libmbim-glib4:armhf depends on libglib2.0-0 (>= 2.56). 163s libjson-glib-1.0-0:armhf depends on libglib2.0-0 (>= 2.75.3). 163s libjcat1:armhf depends on libglib2.0-0 (>= 2.75.3). 163s libgusb2:armhf depends on libglib2.0-0 (>= 2.75.3). 163s libgudev-1.0-0:armhf depends on libglib2.0-0 (>= 2.38.0). 163s libfwupd2:armhf depends on libglib2.0-0 (>= 2.79.0). 163s libblockdev3:armhf depends on libglib2.0-0 (>= 2.42.2). 163s libblockdev-utils3:armhf depends on libglib2.0-0 (>= 2.75.3). 163s libblockdev-swap3:armhf depends on libglib2.0-0 (>= 2.42.2). 163s libblockdev-part3:armhf depends on libglib2.0-0 (>= 2.42.2). 163s libblockdev-nvme3:armhf depends on libglib2.0-0 (>= 2.42.2). 163s libblockdev-mdraid3:armhf depends on libglib2.0-0 (>= 2.42.2). 163s libblockdev-loop3:armhf depends on libglib2.0-0 (>= 2.42.2). 163s libblockdev-fs3:armhf depends on libglib2.0-0 (>= 2.42.2). 163s libblockdev-crypto3:armhf depends on libglib2.0-0 (>= 2.42.2). 163s fwupd depends on libglib2.0-0 (>= 2.79.0). 163s bolt depends on libglib2.0-0 (>= 2.56.0). 163s 163s Removing libglib2.0-0:armhf (2.79.2-1~ubuntu1) ... 164s Selecting previously unselected package libglib2.0-0t64:armhf. 164s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58588 files and directories currently installed.) 164s Preparing to unpack .../libglib2.0-0t64_2.79.3-3ubuntu5_armhf.deb ... 164s libglib2.0-0t64.preinst: Removing /var/lib/dpkg/info/libglib2.0-0:armhf.postrm to avoid loss of /usr/share/glib-2.0/schemas/gschemas.compiled... 164s removed '/var/lib/dpkg/info/libglib2.0-0:armhf.postrm' 164s Unpacking libglib2.0-0t64:armhf (2.79.3-3ubuntu5) ... 164s Preparing to unpack .../libjcat1_0.2.0-2build2_armhf.deb ... 164s Unpacking libjcat1:armhf (0.2.0-2build2) over (0.2.0-2) ... 186s dpkg: libarchive13:armhf: dependency problems, but removing anyway as you requested: 186s fwupd depends on libarchive13 (>= 3.2.1). 186s 186s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58613 files and directories currently installed.) 186s Removing libarchive13:armhf (3.7.2-1ubuntu2) ... 186s Selecting previously unselected package libarchive13t64:armhf. 186s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58607 files and directories currently installed.) 186s Preparing to unpack .../00-libarchive13t64_3.7.2-1.1ubuntu2_armhf.deb ... 186s Unpacking libarchive13t64:armhf (3.7.2-1.1ubuntu2) ... 186s Preparing to unpack .../01-fwupd_1.9.15-2_armhf.deb ... 186s Unpacking fwupd (1.9.15-2) over (1.9.14-1) ... 187s Preparing to unpack .../02-ubuntu-pro-client-l10n_31.2.2_armhf.deb ... 187s Unpacking ubuntu-pro-client-l10n (31.2.2) over (31.1) ... 187s Preparing to unpack .../03-ubuntu-pro-client_31.2.2_armhf.deb ... 187s Unpacking ubuntu-pro-client (31.2.2) over (31.1) ... 187s Preparing to unpack .../04-python3.11_3.11.8-1build4_armhf.deb ... 187s Unpacking python3.11 (3.11.8-1build4) over (3.11.8-1) ... 187s Preparing to unpack .../05-python3.11-minimal_3.11.8-1build4_armhf.deb ... 187s Unpacking python3.11-minimal (3.11.8-1build4) over (3.11.8-1) ... 188s Preparing to unpack .../06-libpython3.11-minimal_3.11.8-1build4_armhf.deb ... 188s Unpacking libpython3.11-minimal:armhf (3.11.8-1build4) over (3.11.8-1) ... 188s Preparing to unpack .../07-libsasl2-modules-db_2.1.28+dfsg1-5ubuntu1_armhf.deb ... 188s Unpacking libsasl2-modules-db:armhf (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 188s Preparing to unpack .../08-libtext-iconv-perl_1.7-8build2_armhf.deb ... 188s Unpacking libtext-iconv-perl:armhf (1.7-8build2) over (1.7-8build1) ... 188s Preparing to unpack .../09-libtext-charwidth-perl_0.04-11build2_armhf.deb ... 188s Unpacking libtext-charwidth-perl:armhf (0.04-11build2) over (0.04-11build1) ... 188s Preparing to unpack .../10-perl-base_5.38.2-3.2_armhf.deb ... 188s Unpacking perl-base (5.38.2-3.2) over (5.38.2-3) ... 189s Setting up perl-base (5.38.2-3.2) ... 189s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58614 files and directories currently installed.) 189s Preparing to unpack .../liblocale-gettext-perl_1.07-6ubuntu4_armhf.deb ... 189s Unpacking liblocale-gettext-perl (1.07-6ubuntu4) over (1.07-6build1) ... 189s Preparing to unpack .../perl-modules-5.38_5.38.2-3.2_all.deb ... 189s Unpacking perl-modules-5.38 (5.38.2-3.2) over (5.38.2-3) ... 190s Preparing to unpack .../python3-gdbm_3.12.2-3ubuntu1.1_armhf.deb ... 190s Unpacking python3-gdbm:armhf (3.12.2-3ubuntu1.1) over (3.11.5-1) ... 190s Preparing to unpack .../man-db_2.12.0-3build4_armhf.deb ... 190s Unpacking man-db (2.12.0-3build4) over (2.12.0-3) ... 190s dpkg: libgdbm-compat4:armhf: dependency problems, but removing anyway as you requested: 190s libperl5.38:armhf depends on libgdbm-compat4 (>= 1.18-3). 190s 190s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58614 files and directories currently installed.) 190s Removing libgdbm-compat4:armhf (1.23-5) ... 190s dpkg: libgdbm6:armhf: dependency problems, but removing anyway as you requested: 190s libperl5.38:armhf depends on libgdbm6 (>= 1.21). 190s 190s Removing libgdbm6:armhf (1.23-5) ... 190s Selecting previously unselected package libgdbm6t64:armhf. 190s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58604 files and directories currently installed.) 190s Preparing to unpack .../libgdbm6t64_1.23-5.1_armhf.deb ... 190s Unpacking libgdbm6t64:armhf (1.23-5.1) ... 190s Selecting previously unselected package libgdbm-compat4t64:armhf. 190s Preparing to unpack .../libgdbm-compat4t64_1.23-5.1_armhf.deb ... 190s Unpacking libgdbm-compat4t64:armhf (1.23-5.1) ... 191s dpkg: libperl5.38:armhf: dependency problems, but removing anyway as you requested: 191s perl depends on libperl5.38 (= 5.38.2-3). 191s 191s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58616 files and directories currently installed.) 191s Removing libperl5.38:armhf (5.38.2-3) ... 191s Selecting previously unselected package libperl5.38t64:armhf. 191s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58097 files and directories currently installed.) 191s Preparing to unpack .../libperl5.38t64_5.38.2-3.2_armhf.deb ... 191s Unpacking libperl5.38t64:armhf (5.38.2-3.2) ... 191s Preparing to unpack .../perl_5.38.2-3.2_armhf.deb ... 191s Unpacking perl (5.38.2-3.2) over (5.38.2-3) ... 191s dpkg: libdb5.3:armhf: dependency problems, but removing anyway as you requested: 191s libpython3.11-stdlib:armhf depends on libdb5.3. 191s libpam-modules:armhf depends on libdb5.3. 191s iproute2 depends on libdb5.3. 191s apt-utils depends on libdb5.3. 191s 191s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58616 files and directories currently installed.) 191s Removing libdb5.3:armhf (5.3.28+dfsg2-4) ... 192s Selecting previously unselected package libdb5.3t64:armhf. 192s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58610 files and directories currently installed.) 192s Preparing to unpack .../libdb5.3t64_5.3.28+dfsg2-6_armhf.deb ... 192s Unpacking libdb5.3t64:armhf (5.3.28+dfsg2-6) ... 192s Preparing to unpack .../libpython3.11-stdlib_3.11.8-1build4_armhf.deb ... 192s Unpacking libpython3.11-stdlib:armhf (3.11.8-1build4) over (3.11.8-1) ... 192s Preparing to unpack .../keyboxd_2.4.4-2ubuntu15_armhf.deb ... 192s Unpacking keyboxd (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 192s dpkg: libnpth0:armhf: dependency problems, but removing anyway as you requested: 192s gpgv depends on libnpth0 (>= 0.90). 192s gpgsm depends on libnpth0 (>= 0.90). 192s gpg-agent depends on libnpth0 (>= 0.90). 192s gpg depends on libnpth0 (>= 0.90). 192s dirmngr depends on libnpth0 (>= 0.90). 192s 192s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58614 files and directories currently installed.) 192s Removing libnpth0:armhf (1.6-3build2) ... 192s Selecting previously unselected package libnpth0t64:armhf. 192s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58609 files and directories currently installed.) 192s Preparing to unpack .../libnpth0t64_1.6-3.1_armhf.deb ... 192s Unpacking libnpth0t64:armhf (1.6-3.1) ... 192s Setting up libnpth0t64:armhf (1.6-3.1) ... 192s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58615 files and directories currently installed.) 192s Preparing to unpack .../gpgv_2.4.4-2ubuntu15_armhf.deb ... 192s Unpacking gpgv (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 193s Setting up gpgv (2.4.4-2ubuntu15) ... 193s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58615 files and directories currently installed.) 193s Preparing to unpack .../gpg_2.4.4-2ubuntu15_armhf.deb ... 193s Unpacking gpg (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 193s Preparing to unpack .../gpg-wks-client_2.4.4-2ubuntu15_armhf.deb ... 193s Unpacking gpg-wks-client (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 193s Preparing to unpack .../gnupg-utils_2.4.4-2ubuntu15_armhf.deb ... 193s Unpacking gnupg-utils (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 193s Preparing to unpack .../gpg-agent_2.4.4-2ubuntu15_armhf.deb ... 193s Unpacking gpg-agent (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 193s Preparing to unpack .../gpgsm_2.4.4-2ubuntu15_armhf.deb ... 193s Unpacking gpgsm (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 193s dpkg: libreadline8:armhf: dependency problems, but removing anyway as you requested: 193s gpgconf depends on libreadline8 (>= 6.0). 193s gawk depends on libreadline8 (>= 6.0). 193s fdisk depends on libreadline8 (>= 6.0). 193s 193s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58615 files and directories currently installed.) 193s Removing libreadline8:armhf (8.2-3) ... 193s Selecting previously unselected package libreadline8t64:armhf. 193s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58603 files and directories currently installed.) 193s Preparing to unpack .../libreadline8t64_8.2-4_armhf.deb ... 193s Adding 'diversion of /lib/arm-linux-gnueabihf/libhistory.so.8 to /lib/arm-linux-gnueabihf/libhistory.so.8.usr-is-merged by libreadline8t64' 193s Adding 'diversion of /lib/arm-linux-gnueabihf/libhistory.so.8.2 to /lib/arm-linux-gnueabihf/libhistory.so.8.2.usr-is-merged by libreadline8t64' 193s Adding 'diversion of /lib/arm-linux-gnueabihf/libreadline.so.8 to /lib/arm-linux-gnueabihf/libreadline.so.8.usr-is-merged by libreadline8t64' 193s Adding 'diversion of /lib/arm-linux-gnueabihf/libreadline.so.8.2 to /lib/arm-linux-gnueabihf/libreadline.so.8.2.usr-is-merged by libreadline8t64' 193s Unpacking libreadline8t64:armhf (8.2-4) ... 193s Setting up libreadline8t64:armhf (8.2-4) ... 193s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58623 files and directories currently installed.) 193s Preparing to unpack .../0-gawk_1%3a5.2.1-2build2_armhf.deb ... 193s Unpacking gawk (1:5.2.1-2build2) over (1:5.2.1-2) ... 193s Preparing to unpack .../1-fdisk_2.39.3-9ubuntu2_armhf.deb ... 193s Unpacking fdisk (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 194s Preparing to unpack .../2-gpgconf_2.4.4-2ubuntu15_armhf.deb ... 194s Unpacking gpgconf (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 194s Preparing to unpack .../3-dirmngr_2.4.4-2ubuntu15_armhf.deb ... 194s Unpacking dirmngr (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 194s Preparing to unpack .../4-gnupg_2.4.4-2ubuntu15_all.deb ... 194s Unpacking gnupg (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 194s Preparing to unpack .../5-python3-apt_2.7.7_armhf.deb ... 194s Unpacking python3-apt (2.7.7) over (2.7.6) ... 194s Preparing to unpack .../6-apt-utils_2.7.14_armhf.deb ... 194s Unpacking apt-utils (2.7.14) over (2.7.12) ... 194s dpkg: libapt-pkg6.0:armhf: dependency problems, but removing anyway as you requested: 194s apt depends on libapt-pkg6.0 (>= 2.7.12). 194s 194s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58621 files and directories currently installed.) 194s Removing libapt-pkg6.0:armhf (2.7.12) ... 194s dpkg: libnettle8:armhf: dependency problems, but removing anyway as you requested: 194s libhogweed6:armhf depends on libnettle8. 194s libgnutls30:armhf depends on libnettle8 (>= 3.9~). 194s libcurl3-gnutls:armhf depends on libnettle8. 194s 194s Removing libnettle8:armhf (3.9.1-2) ... 194s Selecting previously unselected package libapt-pkg6.0t64:armhf. 194s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58565 files and directories currently installed.) 194s Preparing to unpack .../libapt-pkg6.0t64_2.7.14_armhf.deb ... 194s Unpacking libapt-pkg6.0t64:armhf (2.7.14) ... 194s Setting up libapt-pkg6.0t64:armhf (2.7.14) ... 195s Selecting previously unselected package libnettle8t64:armhf. 195s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58615 files and directories currently installed.) 195s Preparing to unpack .../libnettle8t64_3.9.1-2.2_armhf.deb ... 195s Unpacking libnettle8t64:armhf (3.9.1-2.2) ... 195s Setting up libnettle8t64:armhf (3.9.1-2.2) ... 195s dpkg: libhogweed6:armhf: dependency problems, but removing anyway as you requested: 195s libgnutls30:armhf depends on libhogweed6 (>= 3.6). 195s 195s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58623 files and directories currently installed.) 195s Removing libhogweed6:armhf (3.9.1-2) ... 195s Selecting previously unselected package libhogweed6t64:armhf. 195s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58618 files and directories currently installed.) 195s Preparing to unpack .../libhogweed6t64_3.9.1-2.2_armhf.deb ... 195s Unpacking libhogweed6t64:armhf (3.9.1-2.2) ... 195s Setting up libhogweed6t64:armhf (3.9.1-2.2) ... 195s dpkg: libgnutls30:armhf: dependency problems, but removing anyway as you requested: 195s libcurl3-gnutls:armhf depends on libgnutls30 (>= 3.8.2). 195s apt depends on libgnutls30 (>= 3.8.1). 195s 195s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58624 files and directories currently installed.) 195s Removing libgnutls30:armhf (3.8.3-1ubuntu1) ... 195s Selecting previously unselected package libgnutls30t64:armhf. 195s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58615 files and directories currently installed.) 195s Preparing to unpack .../libgnutls30t64_3.8.3-1.1ubuntu2_armhf.deb ... 195s Unpacking libgnutls30t64:armhf (3.8.3-1.1ubuntu2) ... 195s Setting up libgnutls30t64:armhf (3.8.3-1.1ubuntu2) ... 195s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58643 files and directories currently installed.) 195s Preparing to unpack .../archives/apt_2.7.14_armhf.deb ... 195s Unpacking apt (2.7.14) over (2.7.12) ... 196s Setting up apt (2.7.14) ... 197s dpkg: libcurl3-gnutls:armhf: dependency problems, but removing anyway as you requested: 197s libfwupd2:armhf depends on libcurl3-gnutls (>= 7.63.0). 197s 197s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58643 files and directories currently installed.) 197s Removing libcurl3-gnutls:armhf (8.5.0-2ubuntu2) ... 197s Selecting previously unselected package libcurl3t64-gnutls:armhf. 197s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58636 files and directories currently installed.) 197s Preparing to unpack .../libcurl3t64-gnutls_8.5.0-2ubuntu8_armhf.deb ... 197s Unpacking libcurl3t64-gnutls:armhf (8.5.0-2ubuntu8) ... 197s Preparing to unpack .../libfwupd2_1.9.15-2_armhf.deb ... 197s Unpacking libfwupd2:armhf (1.9.15-2) over (1.9.14-1) ... 197s dpkg: libpsl5:armhf: dependency problems, but removing anyway as you requested: 197s wget depends on libpsl5 (>= 0.16.0). 197s libcurl4:armhf depends on libpsl5 (>= 0.16.0). 197s 197s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58643 files and directories currently installed.) 197s Removing libpsl5:armhf (0.21.2-1build1) ... 197s Selecting previously unselected package libpsl5t64:armhf. 197s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58638 files and directories currently installed.) 197s Preparing to unpack .../libpsl5t64_0.21.2-1.1_armhf.deb ... 197s Unpacking libpsl5t64:armhf (0.21.2-1.1) ... 197s Preparing to unpack .../wget_1.21.4-1ubuntu2_armhf.deb ... 197s Unpacking wget (1.21.4-1ubuntu2) over (1.21.4-1ubuntu1) ... 197s Preparing to unpack .../tnftp_20230507-2build1_armhf.deb ... 197s Unpacking tnftp (20230507-2build1) over (20230507-2) ... 197s dpkg: libpcap0.8:armhf: dependency problems, but removing anyway as you requested: 197s tcpdump depends on libpcap0.8 (>= 1.9.1). 197s 197s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58644 files and directories currently installed.) 198s Removing libpcap0.8:armhf (1.10.4-4ubuntu3) ... 198s Selecting previously unselected package libpcap0.8t64:armhf. 198s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58633 files and directories currently installed.) 198s Preparing to unpack .../00-libpcap0.8t64_1.10.4-4.1ubuntu2_armhf.deb ... 198s Unpacking libpcap0.8t64:armhf (1.10.4-4.1ubuntu2) ... 198s Preparing to unpack .../01-tcpdump_4.99.4-3ubuntu2_armhf.deb ... 198s Unpacking tcpdump (4.99.4-3ubuntu2) over (4.99.4-3ubuntu1) ... 198s Preparing to unpack .../02-libsystemd-shared_255.4-1ubuntu5_armhf.deb ... 198s Unpacking libsystemd-shared:armhf (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 198s Preparing to unpack .../03-systemd-resolved_255.4-1ubuntu5_armhf.deb ... 198s Unpacking systemd-resolved (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 198s Preparing to unpack .../04-sudo_1.9.15p5-3ubuntu3_armhf.deb ... 198s Unpacking sudo (1.9.15p5-3ubuntu3) over (1.9.15p5-3ubuntu1) ... 198s Preparing to unpack .../05-rsync_3.2.7-1build1_armhf.deb ... 198s Unpacking rsync (3.2.7-1build1) over (3.2.7-1) ... 198s Preparing to unpack .../06-python3-cryptography_41.0.7-4build2_armhf.deb ... 198s Unpacking python3-cryptography (41.0.7-4build2) over (41.0.7-3) ... 198s Preparing to unpack .../07-openssh-sftp-server_1%3a9.6p1-3ubuntu11_armhf.deb ... 198s Unpacking openssh-sftp-server (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 199s Preparing to unpack .../08-openssh-client_1%3a9.6p1-3ubuntu11_armhf.deb ... 199s Unpacking openssh-client (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 199s Preparing to unpack .../09-openssh-server_1%3a9.6p1-3ubuntu11_armhf.deb ... 219s Unpacking openssh-server (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 219s Selecting previously unselected package linux-headers-6.8.0-20. 220s Preparing to unpack .../10-linux-headers-6.8.0-20_6.8.0-20.20_all.deb ... 220s Unpacking linux-headers-6.8.0-20 (6.8.0-20.20) ... 228s Selecting previously unselected package linux-headers-6.8.0-20-generic. 228s Preparing to unpack .../11-linux-headers-6.8.0-20-generic_6.8.0-20.20_armhf.deb ... 228s Unpacking linux-headers-6.8.0-20-generic (6.8.0-20.20) ... 232s Preparing to unpack .../12-linux-headers-generic_6.8.0-20.20+1_armhf.deb ... 232s Unpacking linux-headers-generic (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 232s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 89796 files and directories currently installed.) 232s Removing linux-headers-6.8.0-11-generic (6.8.0-11.11) ... 233s dpkg: libssl3:armhf: dependency problems, but removing anyway as you requested: 233s systemd depends on libssl3 (>= 3.0.0). 233s libssh-4:armhf depends on libssl3 (>= 3.0.0). 233s libsasl2-modules:armhf depends on libssl3 (>= 3.0.0). 233s libsasl2-2:armhf depends on libssl3 (>= 3.0.0). 233s libnvme1 depends on libssl3 (>= 3.0.0). 233s libkrb5-3:armhf depends on libssl3 (>= 3.0.0). 233s libkmod2:armhf depends on libssl3 (>= 3.0.0). 233s libfido2-1:armhf depends on libssl3 (>= 3.0.0). 233s libcurl4:armhf depends on libssl3 (>= 3.0.0). 233s libcryptsetup12:armhf depends on libssl3 (>= 3.0.0). 233s kmod depends on libssl3 (>= 3.0.0). 233s dhcpcd-base depends on libssl3 (>= 3.0.0). 233s bind9-libs:armhf depends on libssl3 (>= 3.0.0). 233s 233s Removing libssl3:armhf (3.0.10-1ubuntu4) ... 233s Selecting previously unselected package libssl3t64:armhf. 233s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78646 files and directories currently installed.) 233s Preparing to unpack .../libssl3t64_3.0.13-0ubuntu2_armhf.deb ... 233s Unpacking libssl3t64:armhf (3.0.13-0ubuntu2) ... 233s Setting up libssl3t64:armhf (3.0.13-0ubuntu2) ... 233s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78659 files and directories currently installed.) 233s Preparing to unpack .../libudev1_255.4-1ubuntu5_armhf.deb ... 233s Unpacking libudev1:armhf (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 234s Setting up libudev1:armhf (255.4-1ubuntu5) ... 234s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78659 files and directories currently installed.) 234s Preparing to unpack .../systemd_255.4-1ubuntu5_armhf.deb ... 234s Unpacking systemd (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 235s Preparing to unpack .../udev_255.4-1ubuntu5_armhf.deb ... 235s Unpacking udev (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 235s Preparing to unpack .../libsystemd0_255.4-1ubuntu5_armhf.deb ... 235s Unpacking libsystemd0:armhf (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 235s Setting up libsystemd0:armhf (255.4-1ubuntu5) ... 235s Setting up libsystemd-shared:armhf (255.4-1ubuntu5) ... 235s Setting up systemd-dev (255.4-1ubuntu5) ... 235s Setting up systemd (255.4-1ubuntu5) ... 260s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78659 files and directories currently installed.) 260s Preparing to unpack .../systemd-sysv_255.4-1ubuntu5_armhf.deb ... 260s Unpacking systemd-sysv (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 260s Preparing to unpack .../libnss-systemd_255.4-1ubuntu5_armhf.deb ... 260s Unpacking libnss-systemd:armhf (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 260s Preparing to unpack .../libpam-systemd_255.4-1ubuntu5_armhf.deb ... 260s Unpacking libpam-systemd:armhf (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 260s Preparing to unpack .../libpam-modules-bin_1.5.3-5ubuntu3_armhf.deb ... 260s Unpacking libpam-modules-bin (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 260s Setting up libpam-modules-bin (1.5.3-5ubuntu3) ... 260s pam_namespace.service is a disabled or a static unit not running, not starting it. 261s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78659 files and directories currently installed.) 261s Preparing to unpack .../libpam-modules_1.5.3-5ubuntu3_armhf.deb ... 261s Unpacking libpam-modules:armhf (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 261s Setting up libpam-modules:armhf (1.5.3-5ubuntu3) ... 261s Installing new version of config file /etc/security/namespace.init ... 261s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78657 files and directories currently installed.) 261s Preparing to unpack .../libpam-runtime_1.5.3-5ubuntu3_all.deb ... 261s Unpacking libpam-runtime (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 261s Setting up libpam-runtime (1.5.3-5ubuntu3) ... 262s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78657 files and directories currently installed.) 262s Preparing to unpack .../0-dbus-user-session_1.14.10-4ubuntu2_armhf.deb ... 262s Unpacking dbus-user-session (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 262s Preparing to unpack .../1-libapparmor1_4.0.0-beta3-0ubuntu2_armhf.deb ... 262s Unpacking libapparmor1:armhf (4.0.0-beta3-0ubuntu2) over (4.0.0~alpha4-0ubuntu1) ... 262s Preparing to unpack .../2-dbus-bin_1.14.10-4ubuntu2_armhf.deb ... 262s Unpacking dbus-bin (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 262s Preparing to unpack .../3-dbus-system-bus-common_1.14.10-4ubuntu2_all.deb ... 262s Unpacking dbus-system-bus-common (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 262s Preparing to unpack .../4-dbus_1.14.10-4ubuntu2_armhf.deb ... 262s Unpacking dbus (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 262s Preparing to unpack .../5-dbus-daemon_1.14.10-4ubuntu2_armhf.deb ... 262s Unpacking dbus-daemon (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 262s Preparing to unpack .../6-libdbus-1-3_1.14.10-4ubuntu2_armhf.deb ... 262s Unpacking libdbus-1-3:armhf (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 262s Preparing to unpack .../7-kmod_31+20240202-2ubuntu4_armhf.deb ... 262s Unpacking kmod (31+20240202-2ubuntu4) over (30+20230601-2ubuntu1) ... 263s dpkg: warning: unable to delete old directory '/lib/modprobe.d': Directory not empty 263s Preparing to unpack .../8-libkmod2_31+20240202-2ubuntu4_armhf.deb ... 263s Unpacking libkmod2:armhf (31+20240202-2ubuntu4) over (30+20230601-2ubuntu1) ... 263s Preparing to unpack .../9-libmount1_2.39.3-9ubuntu2_armhf.deb ... 263s Unpacking libmount1:armhf (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 263s Setting up libmount1:armhf (2.39.3-9ubuntu2) ... 263s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78656 files and directories currently installed.) 263s Preparing to unpack .../libseccomp2_2.5.5-1ubuntu2_armhf.deb ... 263s Unpacking libseccomp2:armhf (2.5.5-1ubuntu2) over (2.5.5-1ubuntu1) ... 263s Setting up libseccomp2:armhf (2.5.5-1ubuntu2) ... 263s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78656 files and directories currently installed.) 263s Preparing to unpack .../libuuid1_2.39.3-9ubuntu2_armhf.deb ... 263s Unpacking libuuid1:armhf (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 263s Setting up libuuid1:armhf (2.39.3-9ubuntu2) ... 263s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78656 files and directories currently installed.) 263s Preparing to unpack .../0-libcryptsetup12_2%3a2.7.0-1ubuntu2_armhf.deb ... 263s Unpacking libcryptsetup12:armhf (2:2.7.0-1ubuntu2) over (2:2.7.0-1ubuntu1) ... 263s Preparing to unpack .../1-libfdisk1_2.39.3-9ubuntu2_armhf.deb ... 263s Unpacking libfdisk1:armhf (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 264s Preparing to unpack .../2-mount_2.39.3-9ubuntu2_armhf.deb ... 264s Unpacking mount (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 264s Preparing to unpack .../3-libdevmapper1.02.1_2%3a1.02.185-3ubuntu2_armhf.deb ... 264s Unpacking libdevmapper1.02.1:armhf (2:1.02.185-3ubuntu2) over (2:1.02.185-3ubuntu1) ... 264s Selecting previously unselected package libparted2t64:armhf. 264s Preparing to unpack .../4-libparted2t64_3.6-3.1build2_armhf.deb ... 264s Unpacking libparted2t64:armhf (3.6-3.1build2) ... 264s Preparing to unpack .../5-libsqlite3-0_3.45.1-1ubuntu1_armhf.deb ... 264s Unpacking libsqlite3-0:armhf (3.45.1-1ubuntu1) over (3.45.1-1) ... 264s Preparing to unpack .../6-pinentry-curses_1.2.1-3ubuntu4_armhf.deb ... 264s Unpacking pinentry-curses (1.2.1-3ubuntu4) over (1.2.1-3ubuntu1) ... 264s Preparing to unpack .../7-libsmartcols1_2.39.3-9ubuntu2_armhf.deb ... 264s Unpacking libsmartcols1:armhf (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 264s Setting up libsmartcols1:armhf (2.39.3-9ubuntu2) ... 264s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78663 files and directories currently installed.) 264s Preparing to unpack .../0-readline-common_8.2-4_all.deb ... 264s Unpacking readline-common (8.2-4) over (8.2-3) ... 264s Preparing to unpack .../1-python3-yaml_6.0.1-2build1_armhf.deb ... 265s Unpacking python3-yaml (6.0.1-2build1) over (6.0.1-2) ... 265s Preparing to unpack .../2-python-apt-common_2.7.7_all.deb ... 265s Unpacking python-apt-common (2.7.7) over (2.7.6) ... 265s Preparing to unpack .../3-python3-setuptools_68.1.2-2ubuntu1_all.deb ... 265s Unpacking python3-setuptools (68.1.2-2ubuntu1) over (68.1.2-2) ... 265s Preparing to unpack .../4-python3-pkg-resources_68.1.2-2ubuntu1_all.deb ... 266s Unpacking python3-pkg-resources (68.1.2-2ubuntu1) over (68.1.2-2) ... 266s Preparing to unpack .../5-dpkg_1.22.6ubuntu4_armhf.deb ... 266s Unpacking dpkg (1.22.6ubuntu4) over (1.22.4ubuntu5) ... 266s Setting up dpkg (1.22.6ubuntu4) ... 267s Setting up libpython3.12-minimal:armhf (3.12.2-4build3) ... 267s Setting up libexpat1:armhf (2.6.1-2) ... 267s Setting up python3.12-minimal (3.12.2-4build3) ... 269s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78662 files and directories currently installed.) 269s Preparing to unpack .../python3-minimal_3.12.2-0ubuntu1_armhf.deb ... 269s Unpacking python3-minimal (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 269s Setting up python3-minimal (3.12.2-0ubuntu1) ... 270s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78662 files and directories currently installed.) 270s Preparing to unpack .../00-python3_3.12.2-0ubuntu1_armhf.deb ... 270s Unpacking python3 (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 270s Preparing to unpack .../01-libpython3-stdlib_3.12.2-0ubuntu1_armhf.deb ... 270s Unpacking libpython3-stdlib:armhf (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 270s Preparing to unpack .../02-bsdextrautils_2.39.3-9ubuntu2_armhf.deb ... 270s Unpacking bsdextrautils (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 270s Preparing to unpack .../03-groff-base_1.23.0-3build1_armhf.deb ... 270s Unpacking groff-base (1.23.0-3build1) over (1.23.0-3) ... 270s Preparing to unpack .../04-libsasl2-2_2.1.28+dfsg1-5ubuntu1_armhf.deb ... 270s Unpacking libsasl2-2:armhf (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 270s Preparing to unpack .../05-libblockdev-utils3_3.1.0-1build1_armhf.deb ... 270s Unpacking libblockdev-utils3:armhf (3.1.0-1build1) over (3.1.0-1) ... 271s Preparing to unpack .../06-libblockdev-crypto3_3.1.0-1build1_armhf.deb ... 271s Unpacking libblockdev-crypto3:armhf (3.1.0-1build1) over (3.1.0-1) ... 271s Preparing to unpack .../07-logsave_1.47.0-2.4~exp1ubuntu2_armhf.deb ... 271s Unpacking logsave (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 271s Preparing to unpack .../08-dhcpcd-base_1%3a10.0.6-1ubuntu2_armhf.deb ... 271s Unpacking dhcpcd-base (1:10.0.6-1ubuntu2) over (1:10.0.6-1ubuntu1) ... 271s Preparing to unpack .../09-eject_2.39.3-9ubuntu2_armhf.deb ... 271s Unpacking eject (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 271s Preparing to unpack .../10-libbpf1_1%3a1.3.0-2build1_armhf.deb ... 271s Unpacking libbpf1:armhf (1:1.3.0-2build1) over (1:1.3.0-2) ... 271s Preparing to unpack .../11-iproute2_6.1.0-1ubuntu5_armhf.deb ... 271s Unpacking iproute2 (6.1.0-1ubuntu5) over (6.1.0-1ubuntu2) ... 271s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78662 files and directories currently installed.) 271s Removing libelf1:armhf (0.190-1) ... 271s Selecting previously unselected package libelf1t64:armhf. 272s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78657 files and directories currently installed.) 272s Preparing to unpack .../libelf1t64_0.190-1.1build2_armhf.deb ... 272s Unpacking libelf1t64:armhf (0.190-1.1build2) ... 272s Preparing to unpack .../libtirpc-common_1.3.4+ds-1.1_all.deb ... 272s Unpacking libtirpc-common (1.3.4+ds-1.1) over (1.3.4+ds-1build1) ... 272s Preparing to unpack .../lsof_4.95.0-1build2_armhf.deb ... 272s Unpacking lsof (4.95.0-1build2) over (4.95.0-1build1) ... 272s Preparing to unpack .../libnsl2_1.3.0-3build2_armhf.deb ... 272s Unpacking libnsl2:armhf (1.3.0-3build2) over (1.3.0-3) ... 272s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78662 files and directories currently installed.) 272s Removing libtirpc3:armhf (1.3.4+ds-1build1) ... 272s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78656 files and directories currently installed.) 272s Preparing to unpack .../0-libgssapi-krb5-2_1.20.1-6ubuntu1_armhf.deb ... 272s Unpacking libgssapi-krb5-2:armhf (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 272s Preparing to unpack .../1-libkrb5-3_1.20.1-6ubuntu1_armhf.deb ... 272s Unpacking libkrb5-3:armhf (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 272s Preparing to unpack .../2-libkrb5support0_1.20.1-6ubuntu1_armhf.deb ... 272s Unpacking libkrb5support0:armhf (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 272s Preparing to unpack .../3-libk5crypto3_1.20.1-6ubuntu1_armhf.deb ... 272s Unpacking libk5crypto3:armhf (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 273s Preparing to unpack .../4-libcom-err2_1.47.0-2.4~exp1ubuntu2_armhf.deb ... 273s Unpacking libcom-err2:armhf (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 273s Selecting previously unselected package libtirpc3t64:armhf. 273s Preparing to unpack .../5-libtirpc3t64_1.3.4+ds-1.1_armhf.deb ... 273s Adding 'diversion of /lib/arm-linux-gnueabihf/libtirpc.so.3 to /lib/arm-linux-gnueabihf/libtirpc.so.3.usr-is-merged by libtirpc3t64' 273s Adding 'diversion of /lib/arm-linux-gnueabihf/libtirpc.so.3.0.0 to /lib/arm-linux-gnueabihf/libtirpc.so.3.0.0.usr-is-merged by libtirpc3t64' 273s Unpacking libtirpc3t64:armhf (1.3.4+ds-1.1) ... 273s Preparing to unpack .../6-libc-bin_2.39-0ubuntu6_armhf.deb ... 273s Unpacking libc-bin (2.39-0ubuntu6) over (2.39-0ubuntu2) ... 273s Setting up libc-bin (2.39-0ubuntu6) ... 273s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78667 files and directories currently installed.) 273s Preparing to unpack .../0-locales_2.39-0ubuntu6_all.deb ... 273s Unpacking locales (2.39-0ubuntu6) over (2.39-0ubuntu2) ... 274s Preparing to unpack .../1-libproc2-0_2%3a4.0.4-4ubuntu2_armhf.deb ... 274s Unpacking libproc2-0:armhf (2:4.0.4-4ubuntu2) over (2:4.0.4-4ubuntu1) ... 274s Preparing to unpack .../2-procps_2%3a4.0.4-4ubuntu2_armhf.deb ... 274s Unpacking procps (2:4.0.4-4ubuntu2) over (2:4.0.4-4ubuntu1) ... 275s Preparing to unpack .../3-vim-tiny_2%3a9.1.0016-1ubuntu6_armhf.deb ... 275s Unpacking vim-tiny (2:9.1.0016-1ubuntu6) over (2:9.1.0016-1ubuntu2) ... 275s Preparing to unpack .../4-vim-common_2%3a9.1.0016-1ubuntu6_all.deb ... 275s Unpacking vim-common (2:9.1.0016-1ubuntu6) over (2:9.1.0016-1ubuntu2) ... 275s Preparing to unpack .../5-e2fsprogs-l10n_1.47.0-2.4~exp1ubuntu2_all.deb ... 275s Unpacking e2fsprogs-l10n (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 275s Preparing to unpack .../6-libblockdev-fs3_3.1.0-1build1_armhf.deb ... 275s Unpacking libblockdev-fs3:armhf (3.1.0-1build1) over (3.1.0-1) ... 275s dpkg: libreiserfscore0: dependency problems, but removing anyway as you requested: 275s btrfs-progs depends on libreiserfscore0 (>= 1:3.6.27). 275s 275s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78668 files and directories currently installed.) 275s Removing libreiserfscore0 (1:3.6.27-7) ... 275s Selecting previously unselected package libreiserfscore0t64. 275s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78663 files and directories currently installed.) 275s Preparing to unpack .../libreiserfscore0t64_1%3a3.6.27-7.1_armhf.deb ... 275s Unpacking libreiserfscore0t64 (1:3.6.27-7.1) ... 275s Preparing to unpack .../btrfs-progs_6.6.3-1.1build1_armhf.deb ... 275s Unpacking btrfs-progs (6.6.3-1.1build1) over (6.6.3-1.1) ... 275s dpkg: libext2fs2:armhf: dependency problems, but removing anyway as you requested: 275s e2fsprogs depends on libext2fs2 (= 1.47.0-2ubuntu1). 275s 276s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78669 files and directories currently installed.) 276s Removing libext2fs2:armhf (1.47.0-2ubuntu1) ... 276s Selecting previously unselected package libext2fs2t64:armhf. 276s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78662 files and directories currently installed.) 276s Preparing to unpack .../libext2fs2t64_1.47.0-2.4~exp1ubuntu2_armhf.deb ... 276s Adding 'diversion of /lib/arm-linux-gnueabihf/libe2p.so.2 to /lib/arm-linux-gnueabihf/libe2p.so.2.usr-is-merged by libext2fs2t64' 276s Adding 'diversion of /lib/arm-linux-gnueabihf/libe2p.so.2.3 to /lib/arm-linux-gnueabihf/libe2p.so.2.3.usr-is-merged by libext2fs2t64' 276s Adding 'diversion of /lib/arm-linux-gnueabihf/libext2fs.so.2 to /lib/arm-linux-gnueabihf/libext2fs.so.2.usr-is-merged by libext2fs2t64' 276s Adding 'diversion of /lib/arm-linux-gnueabihf/libext2fs.so.2.4 to /lib/arm-linux-gnueabihf/libext2fs.so.2.4.usr-is-merged by libext2fs2t64' 276s Unpacking libext2fs2t64:armhf (1.47.0-2.4~exp1ubuntu2) ... 276s Setting up libcom-err2:armhf (1.47.0-2.4~exp1ubuntu2) ... 276s Setting up libext2fs2t64:armhf (1.47.0-2.4~exp1ubuntu2) ... 276s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78678 files and directories currently installed.) 276s Preparing to unpack .../e2fsprogs_1.47.0-2.4~exp1ubuntu2_armhf.deb ... 276s Unpacking e2fsprogs (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 276s Preparing to unpack .../libblockdev-loop3_3.1.0-1build1_armhf.deb ... 276s Unpacking libblockdev-loop3:armhf (3.1.0-1build1) over (3.1.0-1) ... 276s Preparing to unpack .../libblockdev-mdraid3_3.1.0-1build1_armhf.deb ... 276s Unpacking libblockdev-mdraid3:armhf (3.1.0-1build1) over (3.1.0-1) ... 276s Preparing to unpack .../libblockdev-nvme3_3.1.0-1build1_armhf.deb ... 276s Unpacking libblockdev-nvme3:armhf (3.1.0-1build1) over (3.1.0-1) ... 276s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78678 files and directories currently installed.) 276s Removing libnvme1 (1.8-2) ... 277s Selecting previously unselected package libnvme1t64. 277s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78671 files and directories currently installed.) 277s Preparing to unpack .../00-libnvme1t64_1.8-3_armhf.deb ... 277s Unpacking libnvme1t64 (1.8-3) ... 277s Preparing to unpack .../01-libblockdev-part3_3.1.0-1build1_armhf.deb ... 277s Unpacking libblockdev-part3:armhf (3.1.0-1build1) over (3.1.0-1) ... 277s Preparing to unpack .../02-libblockdev-swap3_3.1.0-1build1_armhf.deb ... 277s Unpacking libblockdev-swap3:armhf (3.1.0-1build1) over (3.1.0-1) ... 277s Preparing to unpack .../03-libblockdev3_3.1.0-1build1_armhf.deb ... 277s Unpacking libblockdev3:armhf (3.1.0-1build1) over (3.1.0-1) ... 277s Preparing to unpack .../04-libgudev-1.0-0_1%3a238-3ubuntu2_armhf.deb ... 277s Unpacking libgudev-1.0-0:armhf (1:238-3ubuntu2) over (1:238-3) ... 277s Preparing to unpack .../05-libxml2_2.9.14+dfsg-1.3ubuntu2_armhf.deb ... 277s Unpacking libxml2:armhf (2.9.14+dfsg-1.3ubuntu2) over (2.9.14+dfsg-1.3ubuntu1) ... 277s Preparing to unpack .../06-libmbim-proxy_1.31.2-0ubuntu2_armhf.deb ... 277s Unpacking libmbim-proxy (1.31.2-0ubuntu2) over (1.30.0-1) ... 277s Preparing to unpack .../07-libmbim-glib4_1.31.2-0ubuntu2_armhf.deb ... 277s Unpacking libmbim-glib4:armhf (1.31.2-0ubuntu2) over (1.30.0-1) ... 277s Preparing to unpack .../08-libjson-glib-1.0-common_1.8.0-2build1_all.deb ... 277s Unpacking libjson-glib-1.0-common (1.8.0-2build1) over (1.8.0-2) ... 277s Preparing to unpack .../09-libjson-glib-1.0-0_1.8.0-2build1_armhf.deb ... 277s Unpacking libjson-glib-1.0-0:armhf (1.8.0-2build1) over (1.8.0-2) ... 278s Preparing to unpack .../10-libusb-1.0-0_2%3a1.0.27-1_armhf.deb ... 278s Unpacking libusb-1.0-0:armhf (2:1.0.27-1) over (2:1.0.26-1) ... 278s Preparing to unpack .../11-libgusb2_0.4.8-1build1_armhf.deb ... 278s Unpacking libgusb2:armhf (0.4.8-1build1) over (0.4.8-1) ... 278s Preparing to unpack .../12-libmm-glib0_1.23.4-0ubuntu1_armhf.deb ... 278s Unpacking libmm-glib0:armhf (1.23.4-0ubuntu1) over (1.22.0-3) ... 278s Preparing to unpack .../13-libprotobuf-c1_1.4.1-1ubuntu3_armhf.deb ... 278s Unpacking libprotobuf-c1:armhf (1.4.1-1ubuntu3) over (1.4.1-1ubuntu2) ... 278s Preparing to unpack .../14-libbrotli1_1.1.0-2build1_armhf.deb ... 278s Unpacking libbrotli1:armhf (1.1.0-2build1) over (1.1.0-2) ... 278s Preparing to unpack .../15-libnghttp2-14_1.59.0-1build1_armhf.deb ... 278s Unpacking libnghttp2-14:armhf (1.59.0-1build1) over (1.59.0-1) ... 278s Preparing to unpack .../16-libssh-4_0.10.6-2build1_armhf.deb ... 278s Unpacking libssh-4:armhf (0.10.6-2build1) over (0.10.6-2) ... 278s Preparing to unpack .../17-libibverbs1_50.0-2build1_armhf.deb ... 278s Unpacking libibverbs1:armhf (50.0-2build1) over (50.0-2) ... 278s Preparing to unpack .../18-libfido2-1_1.14.0-1build1_armhf.deb ... 278s Unpacking libfido2-1:armhf (1.14.0-1build1) over (1.14.0-1) ... 278s Preparing to unpack .../19-coreutils_9.4-3ubuntu3_armhf.deb ... 278s Unpacking coreutils (9.4-3ubuntu3) over (9.4-2ubuntu4) ... 279s Setting up coreutils (9.4-3ubuntu3) ... 279s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78679 files and directories currently installed.) 279s Preparing to unpack .../debianutils_5.17_armhf.deb ... 279s Unpacking debianutils (5.17) over (5.16) ... 279s Setting up debianutils (5.17) ... 279s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78679 files and directories currently installed.) 279s Preparing to unpack .../util-linux_2.39.3-9ubuntu2_armhf.deb ... 279s Unpacking util-linux (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 280s Setting up util-linux (2.39.3-9ubuntu2) ... 281s fstrim.service is a disabled or a static unit not running, not starting it. 281s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78679 files and directories currently installed.) 281s Removing libatm1:armhf (1:2.5.1-5) ... 281s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78674 files and directories currently installed.) 281s Preparing to unpack .../curl_8.5.0-2ubuntu8_armhf.deb ... 281s Unpacking curl (8.5.0-2ubuntu8) over (8.5.0-2ubuntu2) ... 282s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78674 files and directories currently installed.) 282s Removing libcurl4:armhf (8.5.0-2ubuntu2) ... 282s Selecting previously unselected package libcurl4t64:armhf. 282s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78669 files and directories currently installed.) 282s Preparing to unpack .../libcurl4t64_8.5.0-2ubuntu8_armhf.deb ... 282s Unpacking libcurl4t64:armhf (8.5.0-2ubuntu8) ... 282s Preparing to unpack .../file_1%3a5.45-3_armhf.deb ... 282s Unpacking file (1:5.45-3) over (1:5.45-2) ... 282s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78675 files and directories currently installed.) 282s Removing libmagic1:armhf (1:5.45-2) ... 282s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78665 files and directories currently installed.) 282s Preparing to unpack .../libmagic-mgc_1%3a5.45-3_armhf.deb ... 282s Unpacking libmagic-mgc (1:5.45-3) over (1:5.45-2) ... 282s Selecting previously unselected package libmagic1t64:armhf. 282s Preparing to unpack .../libmagic1t64_1%3a5.45-3_armhf.deb ... 282s Unpacking libmagic1t64:armhf (1:5.45-3) ... 282s Preparing to unpack .../libplymouth5_24.004.60-1ubuntu6_armhf.deb ... 282s Unpacking libplymouth5:armhf (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 283s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78676 files and directories currently installed.) 283s Removing libpng16-16:armhf (1.6.43-1) ... 283s Selecting previously unselected package libpng16-16t64:armhf. 283s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78666 files and directories currently installed.) 283s Preparing to unpack .../libpng16-16t64_1.6.43-3_armhf.deb ... 283s Unpacking libpng16-16t64:armhf (1.6.43-3) ... 283s Preparing to unpack .../bind9-host_1%3a9.18.24-0ubuntu3_armhf.deb ... 283s Unpacking bind9-host (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 283s Preparing to unpack .../bind9-dnsutils_1%3a9.18.24-0ubuntu3_armhf.deb ... 283s Unpacking bind9-dnsutils (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 283s Preparing to unpack .../bind9-libs_1%3a9.18.24-0ubuntu3_armhf.deb ... 283s Unpacking bind9-libs:armhf (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 283s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78677 files and directories currently installed.) 283s Removing libuv1:armhf (1.48.0-1) ... 283s Selecting previously unselected package libuv1t64:armhf. 283s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78672 files and directories currently installed.) 283s Preparing to unpack .../libuv1t64_1.48.0-1.1_armhf.deb ... 283s Unpacking libuv1t64:armhf (1.48.0-1.1) ... 283s Preparing to unpack .../uuid-runtime_2.39.3-9ubuntu2_armhf.deb ... 283s Unpacking uuid-runtime (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 284s Preparing to unpack .../libdebconfclient0_0.271ubuntu2_armhf.deb ... 284s Unpacking libdebconfclient0:armhf (0.271ubuntu2) over (0.271ubuntu1) ... 284s Setting up libdebconfclient0:armhf (0.271ubuntu2) ... 284s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78678 files and directories currently installed.) 284s Preparing to unpack .../libsemanage-common_3.5-1build4_all.deb ... 284s Unpacking libsemanage-common (3.5-1build4) over (3.5-1build2) ... 284s Setting up libsemanage-common (3.5-1build4) ... 284s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78678 files and directories currently installed.) 284s Preparing to unpack .../libsemanage2_3.5-1build4_armhf.deb ... 284s Unpacking libsemanage2:armhf (3.5-1build4) over (3.5-1build2) ... 284s Setting up libsemanage2:armhf (3.5-1build4) ... 284s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78678 files and directories currently installed.) 284s Preparing to unpack .../install-info_7.1-3build1_armhf.deb ... 284s Unpacking install-info (7.1-3build1) over (7.1-3) ... 284s Setting up install-info (7.1-3build1) ... 284s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78678 files and directories currently installed.) 284s Preparing to unpack .../00-gcc-13-base_13.2.0-21ubuntu1_armhf.deb ... 284s Unpacking gcc-13-base:armhf (13.2.0-21ubuntu1) over (13.2.0-17ubuntu2) ... 285s Preparing to unpack .../01-libss2_1.47.0-2.4~exp1ubuntu2_armhf.deb ... 285s Unpacking libss2:armhf (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 285s Preparing to unpack .../02-dmsetup_2%3a1.02.185-3ubuntu2_armhf.deb ... 285s Unpacking dmsetup (2:1.02.185-3ubuntu2) over (2:1.02.185-3ubuntu1) ... 285s Preparing to unpack .../03-krb5-locales_1.20.1-6ubuntu1_all.deb ... 285s Unpacking krb5-locales (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 285s Preparing to unpack .../04-libbsd0_0.12.1-1_armhf.deb ... 285s Unpacking libbsd0:armhf (0.12.1-1) over (0.11.8-1) ... 285s Preparing to unpack .../05-libglib2.0-data_2.79.3-3ubuntu5_all.deb ... 285s Unpacking libglib2.0-data (2.79.3-3ubuntu5) over (2.79.2-1~ubuntu1) ... 285s Preparing to unpack .../06-libslang2_2.3.3-3build1_armhf.deb ... 285s Unpacking libslang2:armhf (2.3.3-3build1) over (2.3.3-3) ... 285s Preparing to unpack .../07-rsyslog_8.2312.0-3ubuntu7_armhf.deb ... 285s Unpacking rsyslog (8.2312.0-3ubuntu7) over (8.2312.0-3ubuntu3) ... 285s Selecting previously unselected package xdg-user-dirs. 285s Preparing to unpack .../08-xdg-user-dirs_0.18-1_armhf.deb ... 285s Unpacking xdg-user-dirs (0.18-1) ... 285s Preparing to unpack .../09-xxd_2%3a9.1.0016-1ubuntu6_armhf.deb ... 285s Unpacking xxd (2:9.1.0016-1ubuntu6) over (2:9.1.0016-1ubuntu2) ... 285s Preparing to unpack .../10-apparmor_4.0.0-beta3-0ubuntu2_armhf.deb ... 287s Unpacking apparmor (4.0.0-beta3-0ubuntu2) over (4.0.0~alpha4-0ubuntu1) ... 287s Preparing to unpack .../11-ftp_20230507-2build1_all.deb ... 287s Unpacking ftp (20230507-2build1) over (20230507-2) ... 287s Preparing to unpack .../12-inetutils-telnet_2%3a2.5-3ubuntu3_armhf.deb ... 287s Unpacking inetutils-telnet (2:2.5-3ubuntu3) over (2:2.5-3ubuntu1) ... 288s Preparing to unpack .../13-info_7.1-3build1_armhf.deb ... 288s Unpacking info (7.1-3build1) over (7.1-3) ... 288s Preparing to unpack .../14-libxmuu1_2%3a1.1.3-3build1_armhf.deb ... 288s Unpacking libxmuu1:armhf (2:1.1.3-3build1) over (2:1.1.3-3) ... 288s Preparing to unpack .../15-lshw_02.19.git.2021.06.19.996aaad9c7-2build2_armhf.deb ... 288s Unpacking lshw (02.19.git.2021.06.19.996aaad9c7-2build2) over (02.19.git.2021.06.19.996aaad9c7-2build1) ... 288s Preparing to unpack .../16-mtr-tiny_0.95-1.1build1_armhf.deb ... 288s Unpacking mtr-tiny (0.95-1.1build1) over (0.95-1.1) ... 288s Preparing to unpack .../17-plymouth-theme-ubuntu-text_24.004.60-1ubuntu6_armhf.deb ... 288s Unpacking plymouth-theme-ubuntu-text (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 288s Preparing to unpack .../18-plymouth_24.004.60-1ubuntu6_armhf.deb ... 288s Unpacking plymouth (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 288s Preparing to unpack .../19-psmisc_23.7-1_armhf.deb ... 288s Unpacking psmisc (23.7-1) over (23.6-2) ... 288s Preparing to unpack .../20-telnet_0.17+2.5-3ubuntu3_all.deb ... 288s Unpacking telnet (0.17+2.5-3ubuntu3) over (0.17+2.5-3ubuntu1) ... 288s Preparing to unpack .../21-xz-utils_5.6.0-0.2_armhf.deb ... 288s Unpacking xz-utils (5.6.0-0.2) over (5.4.5-0.3) ... 289s Preparing to unpack .../22-ubuntu-standard_1.536build1_armhf.deb ... 289s Unpacking ubuntu-standard (1.536build1) over (1.536) ... 289s Preparing to unpack .../23-usb.ids_2024.03.18-1_all.deb ... 289s Unpacking usb.ids (2024.03.18-1) over (2024.01.30-1) ... 289s Preparing to unpack .../24-libctf-nobfd0_2.42-4ubuntu1_armhf.deb ... 289s Unpacking libctf-nobfd0:armhf (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 289s Preparing to unpack .../25-libctf0_2.42-4ubuntu1_armhf.deb ... 289s Unpacking libctf0:armhf (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 289s Preparing to unpack .../26-binutils-arm-linux-gnueabihf_2.42-4ubuntu1_armhf.deb ... 289s Unpacking binutils-arm-linux-gnueabihf (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 289s Preparing to unpack .../27-libbinutils_2.42-4ubuntu1_armhf.deb ... 289s Unpacking libbinutils:armhf (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 289s Preparing to unpack .../28-binutils_2.42-4ubuntu1_armhf.deb ... 289s Unpacking binutils (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 289s Preparing to unpack .../29-binutils-common_2.42-4ubuntu1_armhf.deb ... 289s Unpacking binutils-common:armhf (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 289s Preparing to unpack .../30-libsframe1_2.42-4ubuntu1_armhf.deb ... 289s Unpacking libsframe1:armhf (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 289s Preparing to unpack .../31-bolt_0.9.6-2build1_armhf.deb ... 289s Unpacking bolt (0.9.6-2build1) over (0.9.6-2) ... 289s Preparing to unpack .../32-cryptsetup-bin_2%3a2.7.0-1ubuntu2_armhf.deb ... 289s Unpacking cryptsetup-bin (2:2.7.0-1ubuntu2) over (2:2.7.0-1ubuntu1) ... 290s Preparing to unpack .../33-dpkg-dev_1.22.6ubuntu4_all.deb ... 290s Unpacking dpkg-dev (1.22.6ubuntu4) over (1.22.4ubuntu5) ... 290s Preparing to unpack .../34-libdpkg-perl_1.22.6ubuntu4_all.deb ... 300s Unpacking libdpkg-perl (1.22.6ubuntu4) over (1.22.4ubuntu5) ... 300s Preparing to unpack .../35-fonts-ubuntu-console_0.869+git20240321-0ubuntu1_all.deb ... 300s Unpacking fonts-ubuntu-console (0.869+git20240321-0ubuntu1) over (0.869-0ubuntu1) ... 300s Preparing to unpack .../36-gnupg-l10n_2.4.4-2ubuntu15_all.deb ... 300s Unpacking gnupg-l10n (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 301s Preparing to unpack .../37-ibverbs-providers_50.0-2build1_armhf.deb ... 301s Unpacking ibverbs-providers:armhf (50.0-2build1) over (50.0-2) ... 301s Preparing to unpack .../38-jq_1.7.1-3_armhf.deb ... 301s Unpacking jq (1.7.1-3) over (1.7.1-2) ... 301s Preparing to unpack .../39-libjq1_1.7.1-3_armhf.deb ... 301s Unpacking libjq1:armhf (1.7.1-3) over (1.7.1-2) ... 301s Selecting previously unselected package libatm1t64:armhf. 301s Preparing to unpack .../40-libatm1t64_1%3a2.5.1-5.1_armhf.deb ... 301s Unpacking libatm1t64:armhf (1:2.5.1-5.1) ... 301s Preparing to unpack .../41-libevent-core-2.1-7_2.1.12-stable-9build1_armhf.deb ... 301s Unpacking libevent-core-2.1-7:armhf (2.1.12-stable-9build1) over (2.1.12-stable-9) ... 301s Preparing to unpack .../42-libftdi1-2_1.5-6build4_armhf.deb ... 301s Unpacking libftdi1-2:armhf (1.5-6build4) over (1.5-6build3) ... 301s Preparing to unpack .../43-libldap-common_2.6.7+dfsg-1~exp1ubuntu6_all.deb ... 301s Unpacking libldap-common (2.6.7+dfsg-1~exp1ubuntu6) over (2.6.7+dfsg-1~exp1ubuntu1) ... 301s Preparing to unpack .../44-libsasl2-modules_2.1.28+dfsg1-5ubuntu1_armhf.deb ... 301s Unpacking libsasl2-modules:armhf (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 301s Preparing to unpack .../45-python3-distutils_3.12.2-3ubuntu1.1_all.deb ... 301s Unpacking python3-distutils (3.12.2-3ubuntu1.1) over (3.11.5-1) ... 301s Preparing to unpack .../46-python3-lib2to3_3.12.2-3ubuntu1.1_all.deb ... 302s Unpacking python3-lib2to3 (3.12.2-3ubuntu1.1) over (3.11.5-1) ... 302s Preparing to unpack .../47-python3-markupsafe_2.1.5-1build1_armhf.deb ... 302s Unpacking python3-markupsafe (2.1.5-1build1) over (2.1.5-1) ... 302s Preparing to unpack .../48-python3-pyrsistent_0.20.0-1build1_armhf.deb ... 302s Unpacking python3-pyrsistent:armhf (0.20.0-1build1) over (0.20.0-1) ... 302s Preparing to unpack .../49-python3-typing-extensions_4.10.0-1_all.deb ... 302s Unpacking python3-typing-extensions (4.10.0-1) over (4.9.0-1) ... 303s Preparing to unpack .../50-cloud-init_24.1.2-0ubuntu1_all.deb ... 303s Unpacking cloud-init (24.1.2-0ubuntu1) over (24.1.1-0ubuntu1) ... 304s Preparing to unpack .../51-kpartx_0.9.4-5ubuntu6_armhf.deb ... 304s Unpacking kpartx (0.9.4-5ubuntu6) over (0.9.4-5ubuntu3) ... 304s Setting up fonts-ubuntu-console (0.869+git20240321-0ubuntu1) ... 304s Setting up pinentry-curses (1.2.1-3ubuntu4) ... 304s Setting up motd-news-config (13ubuntu8) ... 304s Setting up libtext-iconv-perl:armhf (1.7-8build2) ... 304s Setting up libtext-charwidth-perl:armhf (0.04-11build2) ... 304s Setting up libibverbs1:armhf (50.0-2build1) ... 304s Setting up systemd-sysv (255.4-1ubuntu5) ... 304s Setting up libapparmor1:armhf (4.0.0-beta3-0ubuntu2) ... 304s Setting up libatm1t64:armhf (1:2.5.1-5.1) ... 304s Setting up libgdbm6t64:armhf (1.23-5.1) ... 304s Setting up bsdextrautils (2.39.3-9ubuntu2) ... 304s Setting up libgdbm-compat4t64:armhf (1.23-5.1) ... 304s Setting up xdg-user-dirs (0.18-1) ... 304s Setting up ibverbs-providers:armhf (50.0-2build1) ... 304s Setting up linux-headers-6.8.0-20 (6.8.0-20.20) ... 304s Setting up libmagic-mgc (1:5.45-3) ... 304s Setting up gawk (1:5.2.1-2build2) ... 304s Setting up psmisc (23.7-1) ... 304s Setting up libjq1:armhf (1.7.1-3) ... 304s Setting up libtirpc-common (1.3.4+ds-1.1) ... 304s Setting up libbrotli1:armhf (1.1.0-2build1) ... 304s Setting up libsqlite3-0:armhf (3.45.1-1ubuntu1) ... 304s Setting up libsasl2-modules:armhf (2.1.28+dfsg1-5ubuntu1) ... 304s Setting up libuv1t64:armhf (1.48.0-1.1) ... 304s Setting up libmagic1t64:armhf (1:5.45-3) ... 304s Setting up rsyslog (8.2312.0-3ubuntu7) ... 304s info: The user `syslog' is already a member of `adm'. 305s apparmor_parser: Unable to replace "rsyslogd". apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 305s 306s Setting up binutils-common:armhf (2.42-4ubuntu1) ... 306s Setting up libpsl5t64:armhf (0.21.2-1.1) ... 306s Setting up libnghttp2-14:armhf (1.59.0-1build1) ... 306s Setting up libreiserfscore0t64 (1:3.6.27-7.1) ... 306s Setting up libctf-nobfd0:armhf (2.42-4ubuntu1) ... 306s Setting up libnss-systemd:armhf (255.4-1ubuntu5) ... 306s Setting up krb5-locales (1.20.1-6ubuntu1) ... 306s Setting up file (1:5.45-3) ... 306s Setting up lshw (02.19.git.2021.06.19.996aaad9c7-2build2) ... 306s Setting up locales (2.39-0ubuntu6) ... 308s Generating locales (this might take a while)... 313s en_US.UTF-8... done 313s Generation complete. 313s Setting up libldap-common (2.6.7+dfsg-1~exp1ubuntu6) ... 313s Setting up libprotobuf-c1:armhf (1.4.1-1ubuntu3) ... 313s Setting up xxd (2:9.1.0016-1ubuntu6) ... 313s Setting up libsframe1:armhf (2.42-4ubuntu1) ... 313s Setting up libelf1t64:armhf (0.190-1.1build2) ... 313s Setting up libkrb5support0:armhf (1.20.1-6ubuntu1) ... 313s Setting up linux-headers-6.8.0-20-generic (6.8.0-20.20) ... 313s Setting up eject (2.39.3-9ubuntu2) ... 313s Setting up apparmor (4.0.0-beta3-0ubuntu2) ... 313s Installing new version of config file /etc/apparmor.d/abstractions/authentication ... 313s Installing new version of config file /etc/apparmor.d/abstractions/crypto ... 313s Installing new version of config file /etc/apparmor.d/abstractions/kde-open5 ... 314s Installing new version of config file /etc/apparmor.d/abstractions/openssl ... 314s Installing new version of config file /etc/apparmor.d/code ... 314s Installing new version of config file /etc/apparmor.d/firefox ... 314s apparmor_parser: Unable to replace "lsb_release". apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 314s 314s apparmor_parser: Unable to replace "kmod". apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 314s 314s apparmor_parser: Unable to replace "nvidia_modprobe". apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 314s 316s sysctl: cannot stat /proc/sys/kernel/apparmor_restrict_unprivileged_userns: No such file or directory 316s Reloading AppArmor profiles 316s /sbin/apparmor_parser: Unable to replace "1password". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "Discord". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "MongoDB Compass". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "QtWebEngineProcess". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "brave". /sbin/apparmor_parser: Unable to replace "buildah". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "cam". /sbin/apparmor_parser: Unable to replace "busybox". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "ch-checkns". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "ch-run". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "chrome". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "vscode". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "crun". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "devhelp". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "epiphany". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "evolution". /sbin/apparmor_parser: Unable to replace "element-desktop". /sbin/apparmor_parser: Unable to replace "firefox". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "github-desktop". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "geary". /sbin/apparmor_parser: Unable to replace "flatpak". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "goldendict". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "ipa_verify". /sbin/apparmor_parser: Unable to replace "lc-compliance". /sbin/apparmor_parser: Unable to replace "keybase". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "kchmviewer". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "libcamerify". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "loupe". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "lxc-attach". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "linux-sandbox". /sbin/apparmor_parser: Unable to replace "lxc-create". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "lxc-destroy". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "lxc-execute". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "lxc-usernsexec". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "lxc-stop". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "lxc-unshare". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "msedge". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "mmdebstrap". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "obsidian". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "notepadqq". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "opera". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "pageedit". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "polypane". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "nautilus". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "privacybrowser". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "qutebrowser". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "qcam". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "podman". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "opam". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "rootlesskit". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "rssguard". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "qmapshack". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "QtWebEngineProcess". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "plasmashell". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "sbuild". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "sbuild-adduser". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "runc". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "sbuild-abort". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "rpm". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "sbuild-checkpackages". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "sbuild-clean". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "sbuild-createchroot". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "sbuild-hold". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "sbuild-distupgrade". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "sbuild-unhold". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "sbuild-shell". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "sbuild-update". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "sbuild-upgrade". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "sbuild-destroychroot". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "slack". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "signal-desktop". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "sbuild-apt". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "steam". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "slirp4netns". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "stress-ng". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "scide". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "systemd-coredump". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "surfshark". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "toybox". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "trinity". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "thunderbird". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "tuxedo-control-center". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "tup". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "userbindmount". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "unprivileged_userns". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "lsb_release". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "vdens". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "virtiofsd". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "vivaldi-bin". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "kmod". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "nvidia_modprobe". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "uwsgi-core". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "vpnns". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "wpcom". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "unix-chkpwd". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "/usr/bin/man". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "rsyslogd". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "ubuntu_pro_apt_news". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s /sbin/apparmor_parser: Unable to replace "tcpdump". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 316s 316s Error: At least one profile failed to load 316s Setting up libglib2.0-0t64:armhf (2.79.3-3ubuntu5) ... 316s No schema files found: doing nothing. 316s Setting up libglib2.0-data (2.79.3-3ubuntu5) ... 316s Setting up vim-common (2:9.1.0016-1ubuntu6) ... 340s Setting up gcc-13-base:armhf (13.2.0-21ubuntu1) ... 340s Setting up libqrtr-glib0:armhf (1.2.2-1ubuntu3) ... 340s Setting up libslang2:armhf (2.3.3-3build1) ... 340s Setting up libnvme1t64 (1.8-3) ... 340s Setting up mtr-tiny (0.95-1.1build1) ... 340s Setting up gnupg-l10n (2.4.4-2ubuntu15) ... 340s Setting up librtmp1:armhf (2.4+20151223.gitfa8646d.1-2build6) ... 340s Setting up libdbus-1-3:armhf (1.14.10-4ubuntu2) ... 340s Setting up xz-utils (5.6.0-0.2) ... 340s Setting up perl-modules-5.38 (5.38.2-3.2) ... 340s Setting up libproc2-0:armhf (2:4.0.4-4ubuntu2) ... 340s Setting up libpng16-16t64:armhf (1.6.43-3) ... 340s Setting up systemd-timesyncd (255.4-1ubuntu5) ... 341s Setting up libevent-core-2.1-7:armhf (2.1.12-stable-9build1) ... 341s Setting up libss2:armhf (1.47.0-2.4~exp1ubuntu2) ... 341s Setting up usb.ids (2024.03.18-1) ... 341s Setting up sudo (1.9.15p5-3ubuntu3) ... 341s Setting up dhcpcd-base (1:10.0.6-1ubuntu2) ... 341s Setting up gir1.2-glib-2.0:armhf (2.79.3-3ubuntu5) ... 341s Setting up libk5crypto3:armhf (1.20.1-6ubuntu1) ... 341s Setting up logsave (1.47.0-2.4~exp1ubuntu2) ... 341s Setting up libfdisk1:armhf (2.39.3-9ubuntu2) ... 341s Setting up libdb5.3t64:armhf (5.3.28+dfsg2-6) ... 341s Setting up libdevmapper1.02.1:armhf (2:1.02.185-3ubuntu2) ... 341s Setting up python-apt-common (2.7.7) ... 341s Setting up mount (2.39.3-9ubuntu2) ... 341s Setting up dmsetup (2:1.02.185-3ubuntu2) ... 341s Setting up uuid-runtime (2.39.3-9ubuntu2) ... 342s uuidd.service is a disabled or a static unit not running, not starting it. 343s Setting up libmm-glib0:armhf (1.23.4-0ubuntu1) ... 343s Setting up groff-base (1.23.0-3build1) ... 343s Setting up libplymouth5:armhf (24.004.60-1ubuntu6) ... 343s Setting up dbus-session-bus-common (1.14.10-4ubuntu2) ... 343s Setting up jq (1.7.1-3) ... 343s Setting up procps (2:4.0.4-4ubuntu2) ... 343s Setting up gpgconf (2.4.4-2ubuntu15) ... 343s Setting up libpcap0.8t64:armhf (1.10.4-4.1ubuntu2) ... 343s Setting up libcryptsetup12:armhf (2:2.7.0-1ubuntu2) ... 343s Setting up libgirepository-1.0-1:armhf (1.79.1-1ubuntu6) ... 343s Setting up libjson-glib-1.0-common (1.8.0-2build1) ... 343s Setting up libkrb5-3:armhf (1.20.1-6ubuntu1) ... 343s Setting up libpython3.11-minimal:armhf (3.11.8-1build4) ... 343s Setting up libusb-1.0-0:armhf (2:1.0.27-1) ... 343s Setting up libperl5.38t64:armhf (5.38.2-3.2) ... 343s Setting up tnftp (20230507-2build1) ... 343s Setting up libbinutils:armhf (2.42-4ubuntu1) ... 343s Setting up dbus-system-bus-common (1.14.10-4ubuntu2) ... 343s Setting up libfido2-1:armhf (1.14.0-1build1) ... 343s Setting up openssl (3.0.13-0ubuntu2) ... 343s Setting up libbsd0:armhf (0.12.1-1) ... 343s Setting up readline-common (8.2-4) ... 343s Setting up libxml2:armhf (2.9.14+dfsg-1.3ubuntu2) ... 343s Setting up libxmuu1:armhf (2:1.1.3-3build1) ... 343s Setting up dbus-bin (1.14.10-4ubuntu2) ... 343s Setting up info (7.1-3build1) ... 343s Setting up liblocale-gettext-perl (1.07-6ubuntu4) ... 343s Setting up gpg (2.4.4-2ubuntu15) ... 343s Setting up libgudev-1.0-0:armhf (1:238-3ubuntu2) ... 343s Setting up libpolkit-gobject-1-0:armhf (124-1ubuntu1) ... 343s Setting up libbpf1:armhf (1:1.3.0-2build1) ... 343s Setting up libmbim-glib4:armhf (1.31.2-0ubuntu2) ... 343s Setting up rsync (3.2.7-1build1) ... 345s rsync.service is a disabled or a static unit not running, not starting it. 345s Setting up libudisks2-0:armhf (2.10.1-6) ... 345s Setting up libkmod2:armhf (31+20240202-2ubuntu4) ... 345s Setting up bolt (0.9.6-2build1) ... 345s bolt.service is a disabled or a static unit not running, not starting it. 345s Setting up gnupg-utils (2.4.4-2ubuntu15) ... 345s Setting up initramfs-tools-bin (0.142ubuntu23) ... 345s Setting up libctf0:armhf (2.42-4ubuntu1) ... 345s Setting up cryptsetup-bin (2:2.7.0-1ubuntu2) ... 345s Setting up python3.11-minimal (3.11.8-1build4) ... 347s Setting up tcpdump (4.99.4-3ubuntu2) ... 348s apparmor_parser: Unable to replace "tcpdump". apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 348s 348s Setting up apt-utils (2.7.14) ... 348s Setting up gpg-agent (2.4.4-2ubuntu15) ... 349s Setting up libpython3.12-stdlib:armhf (3.12.2-4build3) ... 349s Setting up wget (1.21.4-1ubuntu2) ... 349s Setting up libxmlb2:armhf (0.3.15-1build1) ... 349s Setting up btrfs-progs (6.6.3-1.1build1) ... 349s Setting up libpython3.11-stdlib:armhf (3.11.8-1build4) ... 349s Setting up python3.12 (3.12.2-4build3) ... 352s Setting up gpgsm (2.4.4-2ubuntu15) ... 352s Setting up inetutils-telnet (2:2.5-3ubuntu3) ... 352s Setting up e2fsprogs (1.47.0-2.4~exp1ubuntu2) ... 352s update-initramfs: deferring update (trigger activated) 353s e2scrub_all.service is a disabled or a static unit not running, not starting it. 353s Setting up libparted2t64:armhf (3.6-3.1build2) ... 353s Setting up linux-headers-generic (6.8.0-20.20+1) ... 353s Setting up dbus-daemon (1.14.10-4ubuntu2) ... 353s Setting up libmbim-proxy (1.31.2-0ubuntu2) ... 353s Setting up vim-tiny (2:9.1.0016-1ubuntu6) ... 353s Setting up kmod (31+20240202-2ubuntu4) ... 354s Setting up libnetplan1:armhf (1.0-1) ... 354s Setting up man-db (2.12.0-3build4) ... 354s Updating database of manual pages ... 356s apparmor_parser: Unable to replace "/usr/bin/man". apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 356s 357s man-db.service is a disabled or a static unit not running, not starting it. 357s Setting up fdisk (2.39.3-9ubuntu2) ... 357s Setting up libjson-glib-1.0-0:armhf (1.8.0-2build1) ... 357s Setting up libsasl2-modules-db:armhf (2.1.28+dfsg1-5ubuntu1) ... 357s Setting up libftdi1-2:armhf (1.5-6build4) ... 357s Setting up perl (5.38.2-3.2) ... 357s Setting up gir1.2-girepository-2.0:armhf (1.79.1-1ubuntu6) ... 357s Setting up dbus (1.14.10-4ubuntu2) ... 357s A reboot is required to replace the running dbus-daemon. 357s Please reboot the system when convenient. 358s Setting up shared-mime-info (2.4-1build1) ... 359s Setting up libblockdev-utils3:armhf (3.1.0-1build1) ... 359s Setting up libgssapi-krb5-2:armhf (1.20.1-6ubuntu1) ... 359s Setting up udev (255.4-1ubuntu5) ... 360s Setting up ftp (20230507-2build1) ... 360s Setting up keyboxd (2.4.4-2ubuntu15) ... 361s Setting up libdpkg-perl (1.22.6ubuntu4) ... 361s Setting up libsasl2-2:armhf (2.1.28+dfsg1-5ubuntu1) ... 361s Setting up libssh-4:armhf (0.10.6-2build1) ... 361s Setting up libblockdev-nvme3:armhf (3.1.0-1build1) ... 361s Setting up libblockdev-fs3:armhf (3.1.0-1build1) ... 361s Setting up kpartx (0.9.4-5ubuntu6) ... 361s Setting up libpam-systemd:armhf (255.4-1ubuntu5) ... 361s Setting up libpolkit-agent-1-0:armhf (124-1ubuntu1) ... 361s Setting up libgpgme11t64:armhf (1.18.0-4.1ubuntu3) ... 361s Setting up netplan-generator (1.0-1) ... 361s Removing 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 361s Setting up initramfs-tools-core (0.142ubuntu23) ... 361s Setting up binutils-arm-linux-gnueabihf (2.42-4ubuntu1) ... 361s Setting up libarchive13t64:armhf (3.7.2-1.1ubuntu2) ... 361s Setting up libldap2:armhf (2.6.7+dfsg-1~exp1ubuntu6) ... 361s Setting up libpython3-stdlib:armhf (3.12.2-0ubuntu1) ... 361s Setting up systemd-resolved (255.4-1ubuntu5) ... 362s Setting up python3.11 (3.11.8-1build4) ... 364s Setting up telnet (0.17+2.5-3ubuntu3) ... 364s Setting up initramfs-tools (0.142ubuntu23) ... 364s update-initramfs: deferring update (trigger activated) 364s Setting up libblockdev-mdraid3:armhf (3.1.0-1build1) ... 364s Setting up libcurl4t64:armhf (8.5.0-2ubuntu8) ... 364s Setting up bind9-libs:armhf (1:9.18.24-0ubuntu3) ... 364s Setting up libtirpc3t64:armhf (1.3.4+ds-1.1) ... 364s Setting up e2fsprogs-l10n (1.47.0-2.4~exp1ubuntu2) ... 364s Setting up libblockdev-swap3:armhf (3.1.0-1build1) ... 364s Setting up plymouth (24.004.60-1ubuntu6) ... 365s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 365s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 365s Setting up iproute2 (6.1.0-1ubuntu5) ... 366s Setting up openssh-client (1:9.6p1-3ubuntu11) ... 366s Setting up libgusb2:armhf (0.4.8-1build1) ... 366s Setting up libblockdev-loop3:armhf (3.1.0-1build1) ... 366s Setting up libcurl3t64-gnutls:armhf (8.5.0-2ubuntu8) ... 366s Setting up parted (3.6-3.1build2) ... 366s Setting up libqmi-glib5:armhf (1.35.2-0ubuntu1) ... 366s Setting up python3 (3.12.2-0ubuntu1) ... 366s Setting up binutils (2.42-4ubuntu1) ... 366s Setting up python3-markupsafe (2.1.5-1build1) ... 367s Setting up libblockdev3:armhf (3.1.0-1build1) ... 367s Setting up libjcat1:armhf (0.2.0-2build2) ... 367s Setting up dpkg-dev (1.22.6ubuntu4) ... 367s Setting up libblockdev-part3:armhf (3.1.0-1build1) ... 367s Setting up dirmngr (2.4.4-2ubuntu15) ... 367s Setting up dbus-user-session (1.14.10-4ubuntu2) ... 367s Setting up plymouth-theme-ubuntu-text (24.004.60-1ubuntu6) ... 367s update-initramfs: deferring update (trigger activated) 367s Setting up python3-cryptography (41.0.7-4build2) ... 368s Setting up python3-gi (3.47.0-3build1) ... 368s Setting up python3-typing-extensions (4.10.0-1) ... 369s Setting up lsof (4.95.0-1build2) ... 369s Setting up python3-pyrsistent:armhf (0.20.0-1build1) ... 369s Setting up libnsl2:armhf (1.3.0-3build2) ... 369s Setting up gnupg (2.4.4-2ubuntu15) ... 369s Setting up python3-netplan (1.0-1) ... 369s Setting up curl (8.5.0-2ubuntu8) ... 369s Setting up libvolume-key1:armhf (0.3.12-7build1) ... 369s Setting up bind9-host (1:9.18.24-0ubuntu3) ... 369s Setting up python3-lib2to3 (3.12.2-3ubuntu1.1) ... 370s Setting up python3-pkg-resources (68.1.2-2ubuntu1) ... 370s Setting up python3-distutils (3.12.2-3ubuntu1.1) ... 371s python3.12: can't get files for byte-compilation 371s Setting up openssh-sftp-server (1:9.6p1-3ubuntu11) ... 371s Setting up python3-dbus (1.3.2-5build2) ... 371s Setting up python3-setuptools (68.1.2-2ubuntu1) ... 372s Setting up gpg-wks-client (2.4.4-2ubuntu15) ... 372s Setting up openssh-server (1:9.6p1-3ubuntu11) ... 373s Replacing config file /etc/ssh/sshd_config with new version 375s Created symlink /etc/systemd/system/ssh.service.requires/ssh.socket → /usr/lib/systemd/system/ssh.socket. 377s Setting up libblockdev-crypto3:armhf (3.1.0-1build1) ... 377s Setting up python3-gdbm:armhf (3.12.2-3ubuntu1.1) ... 377s Setting up python3-apt (2.7.7) ... 378s Setting up libfwupd2:armhf (1.9.15-2) ... 378s Setting up python3-yaml (6.0.1-2build1) ... 378s Setting up libqmi-proxy (1.35.2-0ubuntu1) ... 378s Setting up netplan.io (1.0-1) ... 378s Setting up bind9-dnsutils (1:9.18.24-0ubuntu3) ... 378s Setting up ubuntu-pro-client (31.2.2) ... 378s apparmor_parser: Unable to replace "ubuntu_pro_apt_news". apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 378s 381s Setting up fwupd (1.9.15-2) ... 382s fwupd-offline-update.service is a disabled or a static unit not running, not starting it. 382s fwupd-refresh.service is a disabled or a static unit not running, not starting it. 382s fwupd.service is a disabled or a static unit not running, not starting it. 382s Setting up ubuntu-pro-client-l10n (31.2.2) ... 382s Setting up udisks2 (2.10.1-6) ... 382s sda: Failed to write 'change' to '/sys/devices/platform/LNRO0005:1f/virtio2/host0/target0:0:0/0:0:0:0/block/sda/uevent': Permission denied 382s sda1: Failed to write 'change' to '/sys/devices/platform/LNRO0005:1f/virtio2/host0/target0:0:0/0:0:0:0/block/sda/sda1/uevent': Permission denied 382s sda15: Failed to write 'change' to '/sys/devices/platform/LNRO0005:1f/virtio2/host0/target0:0:0/0:0:0:0/block/sda/sda15/uevent': Permission denied 382s sda2: Failed to write 'change' to '/sys/devices/platform/LNRO0005:1f/virtio2/host0/target0:0:0/0:0:0:0/block/sda/sda2/uevent': Permission denied 382s loop0: Failed to write 'change' to '/sys/devices/virtual/block/loop0/uevent': Permission denied 382s loop1: Failed to write 'change' to '/sys/devices/virtual/block/loop1/uevent': Permission denied 382s loop2: Failed to write 'change' to '/sys/devices/virtual/block/loop2/uevent': Permission denied 382s loop3: Failed to write 'change' to '/sys/devices/virtual/block/loop3/uevent': Permission denied 382s loop4: Failed to write 'change' to '/sys/devices/virtual/block/loop4/uevent': Permission denied 382s loop5: Failed to write 'change' to '/sys/devices/virtual/block/loop5/uevent': Permission denied 382s loop6: Failed to write 'change' to '/sys/devices/virtual/block/loop6/uevent': Permission denied 382s loop7: Failed to write 'change' to '/sys/devices/virtual/block/loop7/uevent': Permission denied 383s Setting up cloud-init (24.1.2-0ubuntu1) ... 386s Setting up ubuntu-minimal (1.536build1) ... 386s Setting up ubuntu-standard (1.536build1) ... 386s Processing triggers for libc-bin (2.39-0ubuntu6) ... 386s Processing triggers for ufw (0.36.2-5) ... 387s Processing triggers for install-info (7.1-3build1) ... 387s Processing triggers for initramfs-tools (0.142ubuntu23) ... 390s Reading package lists... 391s Building dependency tree... 391s Reading state information... 392s The following packages will be REMOVED: 392s linux-headers-6.8.0-11* python3-distutils* python3-lib2to3* 393s 0 upgraded, 0 newly installed, 3 to remove and 1 not upgraded. 393s After this operation, 86.5 MB disk space will be freed. 393s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78647 files and directories currently installed.) 393s Removing linux-headers-6.8.0-11 (6.8.0-11.11) ... 395s Removing python3-distutils (3.12.2-3ubuntu1.1) ... 395s Removing python3-lib2to3 (3.12.2-3ubuntu1.1) ... 398s autopkgtest [12:24:38]: rebooting testbed after setup commands that affected boot 459s autopkgtest [12:25:39]: testbed running kernel: Linux 5.4.0-173-generic #191-Ubuntu SMP Fri Feb 2 13:54:37 UTC 2024 484s autopkgtest [12:26:04]: @@@@@@@@@@@@@@@@@@@@ apt-source r-cran-matrixstats 495s Get:1 http://ftpmaster.internal/ubuntu noble/universe r-cran-matrixstats 1.2.0-1 (dsc) [2230 B] 495s Get:2 http://ftpmaster.internal/ubuntu noble/universe r-cran-matrixstats 1.2.0-1 (tar) [211 kB] 495s Get:3 http://ftpmaster.internal/ubuntu noble/universe r-cran-matrixstats 1.2.0-1 (diff) [4752 B] 495s gpgv: Signature made Mon Jan 8 21:38:59 2024 UTC 495s gpgv: using RSA key F1F007320A035541F0A663CA578A0494D1C646D1 495s gpgv: issuer "tille@debian.org" 495s gpgv: Can't check signature: No public key 495s dpkg-source: warning: cannot verify inline signature for ./r-cran-matrixstats_1.2.0-1.dsc: no acceptable signature found 496s autopkgtest [12:26:16]: testing package r-cran-matrixstats version 1.2.0-1 498s autopkgtest [12:26:18]: build not needed 501s autopkgtest [12:26:21]: test run-unit-test: preparing testbed 511s Reading package lists... 512s Building dependency tree... 512s Reading state information... 512s Starting pkgProblemResolver with broken count: 0 513s Starting 2 pkgProblemResolver with broken count: 0 513s Done 514s The following additional packages will be installed: 514s fontconfig fontconfig-config fonts-dejavu-core fonts-dejavu-mono 514s fonts-glyphicons-halflings fonts-mathjax libblas3 libcairo2 libdatrie1 514s libdeflate0 libfontconfig1 libfreetype6 libgfortran5 libgomp1 libgraphite2-3 514s libharfbuzz0b libice6 libjbig0 libjpeg-turbo8 libjpeg8 libjs-bootstrap 514s libjs-highlight.js libjs-jquery libjs-jquery-datatables libjs-mathjax 514s liblapack3 liblerc4 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 514s libpaper-utils libpaper1 libpixman-1-0 libsharpyuv0 libsm6 libtcl8.6 514s libthai-data libthai0 libtiff6 libtk8.6 libwebp7 libxcb-render0 libxcb-shm0 514s libxft2 libxrender1 libxss1 libxt6t64 node-normalize.css r-base-core 514s r-cran-base64enc r-cran-cli r-cran-colorspace r-cran-commonmark 514s r-cran-digest r-cran-evaluate r-cran-fansi r-cran-farver r-cran-ggplot2 514s r-cran-glue r-cran-gtable r-cran-highr r-cran-isoband r-cran-knitr 514s r-cran-labeling r-cran-lattice r-cran-lifecycle r-cran-magrittr 514s r-cran-markdown r-cran-mass r-cran-matrix r-cran-matrixstats r-cran-mgcv 514s r-cran-munsell r-cran-nlme r-cran-pillar r-cran-pkgconfig r-cran-r.cache 514s r-cran-r.devices r-cran-r.methodss3 r-cran-r.oo r-cran-r.rsp r-cran-r.utils 514s r-cran-r6 r-cran-rcolorbrewer r-cran-rlang r-cran-scales r-cran-tibble 514s r-cran-utf8 r-cran-vctrs r-cran-viridislite r-cran-withr r-cran-xfun 514s r-cran-yaml tcl tcl8.6 unzip x11-common xdg-utils zip 514s Suggested packages: 514s fonts-mathjax-extras fonts-stix libjs-mathjax-doc tk8.6 libjs-html5shiv 514s elpa-ess r-doc-info | r-doc-pdf r-mathlib r-base-html r-cran-kernsmooth 514s r-cran-kernlab r-cran-mvtnorm r-cran-vcd r-cran-shiny r-cran-shinyjs 514s r-cran-dplyr r-cran-png r-cran-jpeg r-cran-rmarkdown r-cran-viridis 514s r-cran-covr r-cran-magick r-cran-sf r-cran-bit64 r-cran-dbi 514s r-cran-formattable r-cran-nanotime r-cran-palmerpenguins r-cran-stringi 514s r-cran-survival r-cran-units r-cran-vdiffr r-cran-testthat r-cran-cairo 514s r-cran-codetools r-cran-bench r-cran-blob r-cran-brio r-cran-callr 514s r-cran-crayon r-cran-here r-cran-hms r-cran-htmltools r-cran-pkgbuild 514s r-cran-pkgload r-cran-purrr r-cran-tidyr tcl-tclreadline 514s Recommended packages: 514s javascript-common r-recommended r-base-dev r-doc-html r-cran-callr 514s r-cran-covr r-cran-crayon r-cran-htmltools r-cran-htmlwidgets r-cran-mockery 514s r-cran-processx r-cran-ps r-cran-rmarkdown r-cran-rprojroot 514s r-cran-rstudioapi r-cran-testthat r-cran-whoami r-cran-curl r-cran-xml2 514s r-cran-unitizer r-cran-dplyr r-cran-hexbin r-cran-hmisc r-cran-mapproj 514s r-cran-maps r-cran-multcomp r-cran-profvis r-cran-quantreg r-cran-ragg 514s r-cran-rpart r-cran-sf r-cran-svglite r-cran-vdiffr r-cran-dbi 514s r-cran-rsqlite r-cran-waldo r-cran-testit r-cran-bslib r-cran-codetools 514s r-cran-formatr r-cran-gridsvg r-cran-jpeg r-cran-magick r-cran-png 514s r-cran-reticulate r-cran-rgl r-cran-sass r-cran-tikzdevice r-cran-tinytex 514s r-cran-webshot node-highlight.js r-cran-lintr r-cran-tidyverse r-cran-rcurl 514s r-cran-lubridate libjs-remark-slide r-cran-fs r-cran-usethis r-cran-bit64 514s r-cran-dichromat r-cran-hms r-cran-stringi r-cran-data.table r-cran-mockr 514s r-cran-formattable r-cran-generics r-cran-pkgdown r-cran-zeallot r-cran-mime 514s r-cran-remotes r-cran-renv r-cran-jsonlite r-cran-runit 514s libfile-mimeinfo-perl libnet-dbus-perl libx11-protocol-perl x11-utils 514s x11-xserver-utils 515s The following NEW packages will be installed: 515s autopkgtest-satdep fontconfig fontconfig-config fonts-dejavu-core 515s fonts-dejavu-mono fonts-glyphicons-halflings fonts-mathjax libblas3 515s libcairo2 libdatrie1 libdeflate0 libfontconfig1 libfreetype6 libgfortran5 515s libgomp1 libgraphite2-3 libharfbuzz0b libice6 libjbig0 libjpeg-turbo8 515s libjpeg8 libjs-bootstrap libjs-highlight.js libjs-jquery 515s libjs-jquery-datatables libjs-mathjax liblapack3 liblerc4 libpango-1.0-0 515s libpangocairo-1.0-0 libpangoft2-1.0-0 libpaper-utils libpaper1 libpixman-1-0 515s libsharpyuv0 libsm6 libtcl8.6 libthai-data libthai0 libtiff6 libtk8.6 515s libwebp7 libxcb-render0 libxcb-shm0 libxft2 libxrender1 libxss1 libxt6t64 515s node-normalize.css r-base-core r-cran-base64enc r-cran-cli r-cran-colorspace 515s r-cran-commonmark r-cran-digest r-cran-evaluate r-cran-fansi r-cran-farver 515s r-cran-ggplot2 r-cran-glue r-cran-gtable r-cran-highr r-cran-isoband 515s r-cran-knitr r-cran-labeling r-cran-lattice r-cran-lifecycle r-cran-magrittr 515s r-cran-markdown r-cran-mass r-cran-matrix r-cran-matrixstats r-cran-mgcv 515s r-cran-munsell r-cran-nlme r-cran-pillar r-cran-pkgconfig r-cran-r.cache 515s r-cran-r.devices r-cran-r.methodss3 r-cran-r.oo r-cran-r.rsp r-cran-r.utils 515s r-cran-r6 r-cran-rcolorbrewer r-cran-rlang r-cran-scales r-cran-tibble 515s r-cran-utf8 r-cran-vctrs r-cran-viridislite r-cran-withr r-cran-xfun 515s r-cran-yaml tcl tcl8.6 unzip x11-common xdg-utils zip 515s 0 upgraded, 100 newly installed, 0 to remove and 1 not upgraded. 515s Need to get 80.2 MB/80.2 MB of archives. 515s After this operation, 171 MB of additional disk space will be used. 515s Get:1 /tmp/autopkgtest.5uVHjq/1-autopkgtest-satdep.deb autopkgtest-satdep armhf 0 [756 B] 515s Get:2 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libfreetype6 armhf 2.13.2+dfsg-1build2 [331 kB] 515s Get:3 http://ftpmaster.internal/ubuntu noble/main armhf fonts-dejavu-mono all 2.37-8 [502 kB] 515s Get:4 http://ftpmaster.internal/ubuntu noble/main armhf fonts-dejavu-core all 2.37-8 [835 kB] 515s Get:5 http://ftpmaster.internal/ubuntu noble-proposed/main armhf fontconfig-config armhf 2.15.0-1.1ubuntu1 [37.4 kB] 515s Get:6 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libfontconfig1 armhf 2.15.0-1.1ubuntu1 [113 kB] 515s Get:7 http://ftpmaster.internal/ubuntu noble-proposed/main armhf fontconfig armhf 2.15.0-1.1ubuntu1 [189 kB] 515s Get:8 http://ftpmaster.internal/ubuntu noble/universe armhf fonts-glyphicons-halflings all 1.009~3.4.1+dfsg-3 [118 kB] 515s Get:9 http://ftpmaster.internal/ubuntu noble/main armhf fonts-mathjax all 2.7.9+dfsg-1 [2208 kB] 516s Get:10 http://ftpmaster.internal/ubuntu noble/main armhf libblas3 armhf 3.12.0-3 [123 kB] 516s Get:11 http://ftpmaster.internal/ubuntu noble/main armhf libpixman-1-0 armhf 0.42.2-1 [184 kB] 516s Get:12 http://ftpmaster.internal/ubuntu noble/main armhf libxcb-render0 armhf 1.15-1 [15.2 kB] 516s Get:13 http://ftpmaster.internal/ubuntu noble/main armhf libxcb-shm0 armhf 1.15-1 [5852 B] 516s Get:14 http://ftpmaster.internal/ubuntu noble/main armhf libxrender1 armhf 1:0.9.10-1.1 [16.5 kB] 516s Get:15 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libcairo2 armhf 1.18.0-1ubuntu1 [482 kB] 516s Get:16 http://ftpmaster.internal/ubuntu noble/main armhf libdatrie1 armhf 0.2.13-3 [16.9 kB] 516s Get:17 http://ftpmaster.internal/ubuntu noble/main armhf libdeflate0 armhf 1.19-1 [41.3 kB] 516s Get:18 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgfortran5 armhf 14-20240315-1ubuntu1 [312 kB] 516s Get:19 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgomp1 armhf 14-20240315-1ubuntu1 [125 kB] 516s Get:20 http://ftpmaster.internal/ubuntu noble/main armhf libgraphite2-3 armhf 1.3.14-2 [72.7 kB] 516s Get:21 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libharfbuzz0b armhf 8.3.0-2build1 [446 kB] 516s Get:22 http://ftpmaster.internal/ubuntu noble/main armhf x11-common all 1:7.7+23ubuntu2 [23.4 kB] 516s Get:23 http://ftpmaster.internal/ubuntu noble/main armhf libice6 armhf 2:1.0.10-1build2 [36.4 kB] 516s Get:24 http://ftpmaster.internal/ubuntu noble/main armhf libjpeg-turbo8 armhf 2.1.5-2ubuntu1 [123 kB] 516s Get:25 http://ftpmaster.internal/ubuntu noble/main armhf libjpeg8 armhf 8c-2ubuntu11 [2148 B] 516s Get:26 http://ftpmaster.internal/ubuntu noble/universe armhf libjs-bootstrap all 3.4.1+dfsg-3 [129 kB] 516s Get:27 http://ftpmaster.internal/ubuntu noble/universe armhf libjs-highlight.js all 9.18.5+dfsg1-2 [385 kB] 516s Get:28 http://ftpmaster.internal/ubuntu noble/main armhf libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [328 kB] 516s Get:29 http://ftpmaster.internal/ubuntu noble/universe armhf libjs-jquery-datatables all 1.11.5+dfsg-2 [146 kB] 516s Get:30 http://ftpmaster.internal/ubuntu noble/main armhf liblapack3 armhf 3.12.0-3 [2085 kB] 516s Get:31 http://ftpmaster.internal/ubuntu noble/main armhf liblerc4 armhf 4.0.0+ds-4ubuntu1 [152 kB] 516s Get:32 http://ftpmaster.internal/ubuntu noble/main armhf libthai-data all 0.1.29-2 [158 kB] 516s Get:33 http://ftpmaster.internal/ubuntu noble/main armhf libthai0 armhf 0.1.29-2 [15.1 kB] 516s Get:34 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpango-1.0-0 armhf 1.52.1+ds-1 [206 kB] 516s Get:35 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpangoft2-1.0-0 armhf 1.52.1+ds-1 [36.4 kB] 516s Get:36 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpangocairo-1.0-0 armhf 1.52.1+ds-1 [24.9 kB] 516s Get:37 http://ftpmaster.internal/ubuntu noble/main armhf libpaper1 armhf 1.1.29 [12.5 kB] 516s Get:38 http://ftpmaster.internal/ubuntu noble/main armhf libpaper-utils armhf 1.1.29 [8170 B] 516s Get:39 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsharpyuv0 armhf 1.3.2-0.4build2 [13.6 kB] 516s Get:40 http://ftpmaster.internal/ubuntu noble/main armhf libsm6 armhf 2:1.2.3-1build2 [15.1 kB] 516s Get:41 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libtcl8.6 armhf 8.6.14+dfsg-1 [903 kB] 516s Get:42 http://ftpmaster.internal/ubuntu noble/main armhf libjbig0 armhf 2.1-6.1ubuntu1 [24.9 kB] 516s Get:43 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libwebp7 armhf 1.3.2-0.4build2 [183 kB] 516s Get:44 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libtiff6 armhf 4.5.1+git230720-4ubuntu1 [178 kB] 516s Get:45 http://ftpmaster.internal/ubuntu noble/main armhf libxft2 armhf 2.3.6-1 [36.8 kB] 516s Get:46 http://ftpmaster.internal/ubuntu noble/main armhf libxss1 armhf 1:1.2.3-1build2 [7580 B] 516s Get:47 http://ftpmaster.internal/ubuntu noble/main armhf libtk8.6 armhf 8.6.14-1 [681 kB] 516s Get:48 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libxt6t64 armhf 1:1.2.1-1.2 [145 kB] 516s Get:49 http://ftpmaster.internal/ubuntu noble/universe armhf node-normalize.css all 8.0.1-5 [10.8 kB] 516s Get:50 http://ftpmaster.internal/ubuntu noble/main armhf zip armhf 3.0-13 [162 kB] 516s Get:51 http://ftpmaster.internal/ubuntu noble/main armhf unzip armhf 6.0-28ubuntu3 [163 kB] 516s Get:52 http://ftpmaster.internal/ubuntu noble/main armhf xdg-utils all 1.1.3-4.1ubuntu3 [62.0 kB] 516s Get:53 http://ftpmaster.internal/ubuntu noble-proposed/universe armhf r-base-core armhf 4.3.3-2build1 [26.6 MB] 517s Get:54 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-base64enc armhf 0.1-3-3 [27.3 kB] 517s Get:55 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-cli armhf 3.6.2-1 [1363 kB] 518s Get:56 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-colorspace armhf 2.1-0+dfsg-1 [1538 kB] 518s Get:57 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-commonmark armhf 1.9.1-1 [110 kB] 518s Get:58 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-digest armhf 0.6.34-1 [180 kB] 518s Get:59 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-evaluate all 0.23-1 [90.2 kB] 518s Get:60 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-fansi armhf 1.0.5-1 [611 kB] 518s Get:61 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-farver armhf 2.1.1-1 [1346 kB] 518s Get:62 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-glue armhf 1.7.0-1 [153 kB] 518s Get:63 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-rlang armhf 1.1.3-1 [1658 kB] 518s Get:64 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-lifecycle all 1.0.4+dfsg-1 [110 kB] 518s Get:65 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-gtable all 0.3.4+dfsg-1 [191 kB] 518s Get:66 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-isoband armhf 0.2.7-1 [1477 kB] 518s Get:67 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-mass armhf 7.3-60.0.1-1 [1118 kB] 518s Get:68 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-lattice armhf 0.22-5-1 [1341 kB] 518s Get:69 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-nlme armhf 3.1.164-1 [2252 kB] 518s Get:70 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-matrix armhf 1.6-5-1 [3762 kB] 518s Get:71 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-mgcv armhf 1.9-1-1 [3205 kB] 518s Get:72 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-labeling all 0.4.3-1 [62.1 kB] 518s Get:73 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-munsell all 0.5.0-2build1 [208 kB] 518s Get:74 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-r6 all 2.5.1-1 [99.0 kB] 518s Get:75 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-rcolorbrewer all 1.1-3-1build1 [55.4 kB] 518s Get:76 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-viridislite all 0.4.2-2 [1088 kB] 518s Get:77 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-scales all 1.3.0-1 [603 kB] 518s Get:78 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-magrittr armhf 2.0.3-1 [154 kB] 518s Get:79 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-utf8 armhf 1.2.4-1 [136 kB] 518s Get:80 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-vctrs armhf 0.6.5-1 [1310 kB] 518s Get:81 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-pillar all 1.9.0+dfsg-1 [464 kB] 518s Get:82 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-pkgconfig all 2.0.3-2build1 [19.7 kB] 518s Get:83 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-tibble armhf 3.2.1+dfsg-2 [415 kB] 518s Get:84 http://ftpmaster.internal/ubuntu noble-proposed/universe armhf r-cran-withr all 3.0.0+dfsg-1 [228 kB] 518s Get:85 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-ggplot2 all 3.4.4+dfsg-1 [3411 kB] 518s Get:86 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-xfun armhf 0.41+dfsg-1 [415 kB] 518s Get:87 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-highr all 0.10+dfsg-1 [38.3 kB] 518s Get:88 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-yaml armhf 2.3.8-1 [99.0 kB] 518s Get:89 http://ftpmaster.internal/ubuntu noble/main armhf libjs-mathjax all 2.7.9+dfsg-1 [5665 kB] 518s Get:90 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-knitr all 1.45+dfsg-1 [917 kB] 518s Get:91 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-markdown all 1.12+dfsg-1 [179 kB] 518s Get:92 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-matrixstats armhf 1.2.0-1 [478 kB] 518s Get:93 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-r.methodss3 all 1.8.2-1 [84.0 kB] 518s Get:94 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-r.oo all 1.26.0-1 [955 kB] 518s Get:95 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-r.utils all 2.12.3-1 [1386 kB] 518s Get:96 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-r.cache all 0.16.0-1 [113 kB] 518s Get:97 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-r.devices all 2.17.2+ds-1 [398 kB] 518s Get:98 http://ftpmaster.internal/ubuntu noble-proposed/main armhf tcl8.6 armhf 8.6.14+dfsg-1 [14.6 kB] 518s Get:99 http://ftpmaster.internal/ubuntu noble-proposed/main armhf tcl armhf 8.6.14 [4016 B] 518s Get:100 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-r.rsp all 0.46.0+ds-1 [1412 kB] 520s Preconfiguring packages ... 520s Fetched 80.2 MB in 4s (20.9 MB/s) 520s Selecting previously unselected package libfreetype6:armhf. 520s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58436 files and directories currently installed.) 520s Preparing to unpack .../00-libfreetype6_2.13.2+dfsg-1build2_armhf.deb ... 520s Unpacking libfreetype6:armhf (2.13.2+dfsg-1build2) ... 520s Selecting previously unselected package fonts-dejavu-mono. 521s Preparing to unpack .../01-fonts-dejavu-mono_2.37-8_all.deb ... 521s Unpacking fonts-dejavu-mono (2.37-8) ... 521s Selecting previously unselected package fonts-dejavu-core. 521s Preparing to unpack .../02-fonts-dejavu-core_2.37-8_all.deb ... 521s Unpacking fonts-dejavu-core (2.37-8) ... 521s Selecting previously unselected package fontconfig-config. 521s Preparing to unpack .../03-fontconfig-config_2.15.0-1.1ubuntu1_armhf.deb ... 521s Unpacking fontconfig-config (2.15.0-1.1ubuntu1) ... 521s Selecting previously unselected package libfontconfig1:armhf. 521s Preparing to unpack .../04-libfontconfig1_2.15.0-1.1ubuntu1_armhf.deb ... 521s Unpacking libfontconfig1:armhf (2.15.0-1.1ubuntu1) ... 521s Selecting previously unselected package fontconfig. 521s Preparing to unpack .../05-fontconfig_2.15.0-1.1ubuntu1_armhf.deb ... 521s Unpacking fontconfig (2.15.0-1.1ubuntu1) ... 521s Selecting previously unselected package fonts-glyphicons-halflings. 521s Preparing to unpack .../06-fonts-glyphicons-halflings_1.009~3.4.1+dfsg-3_all.deb ... 521s Unpacking fonts-glyphicons-halflings (1.009~3.4.1+dfsg-3) ... 521s Selecting previously unselected package fonts-mathjax. 521s Preparing to unpack .../07-fonts-mathjax_2.7.9+dfsg-1_all.deb ... 521s Unpacking fonts-mathjax (2.7.9+dfsg-1) ... 522s Selecting previously unselected package libblas3:armhf. 522s Preparing to unpack .../08-libblas3_3.12.0-3_armhf.deb ... 522s Unpacking libblas3:armhf (3.12.0-3) ... 522s Selecting previously unselected package libpixman-1-0:armhf. 522s Preparing to unpack .../09-libpixman-1-0_0.42.2-1_armhf.deb ... 522s Unpacking libpixman-1-0:armhf (0.42.2-1) ... 522s Selecting previously unselected package libxcb-render0:armhf. 522s Preparing to unpack .../10-libxcb-render0_1.15-1_armhf.deb ... 522s Unpacking libxcb-render0:armhf (1.15-1) ... 522s Selecting previously unselected package libxcb-shm0:armhf. 522s Preparing to unpack .../11-libxcb-shm0_1.15-1_armhf.deb ... 522s Unpacking libxcb-shm0:armhf (1.15-1) ... 522s Selecting previously unselected package libxrender1:armhf. 522s Preparing to unpack .../12-libxrender1_1%3a0.9.10-1.1_armhf.deb ... 522s Unpacking libxrender1:armhf (1:0.9.10-1.1) ... 522s Selecting previously unselected package libcairo2:armhf. 522s Preparing to unpack .../13-libcairo2_1.18.0-1ubuntu1_armhf.deb ... 522s Unpacking libcairo2:armhf (1.18.0-1ubuntu1) ... 522s Selecting previously unselected package libdatrie1:armhf. 522s Preparing to unpack .../14-libdatrie1_0.2.13-3_armhf.deb ... 522s Unpacking libdatrie1:armhf (0.2.13-3) ... 522s Selecting previously unselected package libdeflate0:armhf. 522s Preparing to unpack .../15-libdeflate0_1.19-1_armhf.deb ... 522s Unpacking libdeflate0:armhf (1.19-1) ... 522s Selecting previously unselected package libgfortran5:armhf. 522s Preparing to unpack .../16-libgfortran5_14-20240315-1ubuntu1_armhf.deb ... 522s Unpacking libgfortran5:armhf (14-20240315-1ubuntu1) ... 522s Selecting previously unselected package libgomp1:armhf. 522s Preparing to unpack .../17-libgomp1_14-20240315-1ubuntu1_armhf.deb ... 522s Unpacking libgomp1:armhf (14-20240315-1ubuntu1) ... 522s Selecting previously unselected package libgraphite2-3:armhf. 522s Preparing to unpack .../18-libgraphite2-3_1.3.14-2_armhf.deb ... 522s Unpacking libgraphite2-3:armhf (1.3.14-2) ... 522s Selecting previously unselected package libharfbuzz0b:armhf. 522s Preparing to unpack .../19-libharfbuzz0b_8.3.0-2build1_armhf.deb ... 522s Unpacking libharfbuzz0b:armhf (8.3.0-2build1) ... 522s Selecting previously unselected package x11-common. 522s Preparing to unpack .../20-x11-common_1%3a7.7+23ubuntu2_all.deb ... 522s Unpacking x11-common (1:7.7+23ubuntu2) ... 522s Selecting previously unselected package libice6:armhf. 522s Preparing to unpack .../21-libice6_2%3a1.0.10-1build2_armhf.deb ... 522s Unpacking libice6:armhf (2:1.0.10-1build2) ... 522s Selecting previously unselected package libjpeg-turbo8:armhf. 522s Preparing to unpack .../22-libjpeg-turbo8_2.1.5-2ubuntu1_armhf.deb ... 522s Unpacking libjpeg-turbo8:armhf (2.1.5-2ubuntu1) ... 522s Selecting previously unselected package libjpeg8:armhf. 522s Preparing to unpack .../23-libjpeg8_8c-2ubuntu11_armhf.deb ... 522s Unpacking libjpeg8:armhf (8c-2ubuntu11) ... 522s Selecting previously unselected package libjs-bootstrap. 522s Preparing to unpack .../24-libjs-bootstrap_3.4.1+dfsg-3_all.deb ... 522s Unpacking libjs-bootstrap (3.4.1+dfsg-3) ... 523s Selecting previously unselected package libjs-highlight.js. 523s Preparing to unpack .../25-libjs-highlight.js_9.18.5+dfsg1-2_all.deb ... 523s Unpacking libjs-highlight.js (9.18.5+dfsg1-2) ... 523s Selecting previously unselected package libjs-jquery. 523s Preparing to unpack .../26-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... 523s Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 523s Selecting previously unselected package libjs-jquery-datatables. 523s Preparing to unpack .../27-libjs-jquery-datatables_1.11.5+dfsg-2_all.deb ... 523s Unpacking libjs-jquery-datatables (1.11.5+dfsg-2) ... 523s Selecting previously unselected package liblapack3:armhf. 523s Preparing to unpack .../28-liblapack3_3.12.0-3_armhf.deb ... 523s Unpacking liblapack3:armhf (3.12.0-3) ... 523s Selecting previously unselected package liblerc4:armhf. 523s Preparing to unpack .../29-liblerc4_4.0.0+ds-4ubuntu1_armhf.deb ... 523s Unpacking liblerc4:armhf (4.0.0+ds-4ubuntu1) ... 523s Selecting previously unselected package libthai-data. 523s Preparing to unpack .../30-libthai-data_0.1.29-2_all.deb ... 523s Unpacking libthai-data (0.1.29-2) ... 523s Selecting previously unselected package libthai0:armhf. 523s Preparing to unpack .../31-libthai0_0.1.29-2_armhf.deb ... 523s Unpacking libthai0:armhf (0.1.29-2) ... 523s Selecting previously unselected package libpango-1.0-0:armhf. 523s Preparing to unpack .../32-libpango-1.0-0_1.52.1+ds-1_armhf.deb ... 523s Unpacking libpango-1.0-0:armhf (1.52.1+ds-1) ... 523s Selecting previously unselected package libpangoft2-1.0-0:armhf. 523s Preparing to unpack .../33-libpangoft2-1.0-0_1.52.1+ds-1_armhf.deb ... 523s Unpacking libpangoft2-1.0-0:armhf (1.52.1+ds-1) ... 523s Selecting previously unselected package libpangocairo-1.0-0:armhf. 523s Preparing to unpack .../34-libpangocairo-1.0-0_1.52.1+ds-1_armhf.deb ... 523s Unpacking libpangocairo-1.0-0:armhf (1.52.1+ds-1) ... 523s Selecting previously unselected package libpaper1:armhf. 523s Preparing to unpack .../35-libpaper1_1.1.29_armhf.deb ... 523s Unpacking libpaper1:armhf (1.1.29) ... 523s Selecting previously unselected package libpaper-utils. 523s Preparing to unpack .../36-libpaper-utils_1.1.29_armhf.deb ... 523s Unpacking libpaper-utils (1.1.29) ... 523s Selecting previously unselected package libsharpyuv0:armhf. 523s Preparing to unpack .../37-libsharpyuv0_1.3.2-0.4build2_armhf.deb ... 523s Unpacking libsharpyuv0:armhf (1.3.2-0.4build2) ... 523s Selecting previously unselected package libsm6:armhf. 523s Preparing to unpack .../38-libsm6_2%3a1.2.3-1build2_armhf.deb ... 523s Unpacking libsm6:armhf (2:1.2.3-1build2) ... 523s Selecting previously unselected package libtcl8.6:armhf. 524s Preparing to unpack .../39-libtcl8.6_8.6.14+dfsg-1_armhf.deb ... 524s Unpacking libtcl8.6:armhf (8.6.14+dfsg-1) ... 524s Selecting previously unselected package libjbig0:armhf. 524s Preparing to unpack .../40-libjbig0_2.1-6.1ubuntu1_armhf.deb ... 524s Unpacking libjbig0:armhf (2.1-6.1ubuntu1) ... 524s Selecting previously unselected package libwebp7:armhf. 524s Preparing to unpack .../41-libwebp7_1.3.2-0.4build2_armhf.deb ... 524s Unpacking libwebp7:armhf (1.3.2-0.4build2) ... 524s Selecting previously unselected package libtiff6:armhf. 524s Preparing to unpack .../42-libtiff6_4.5.1+git230720-4ubuntu1_armhf.deb ... 524s Unpacking libtiff6:armhf (4.5.1+git230720-4ubuntu1) ... 524s Selecting previously unselected package libxft2:armhf. 524s Preparing to unpack .../43-libxft2_2.3.6-1_armhf.deb ... 524s Unpacking libxft2:armhf (2.3.6-1) ... 524s Selecting previously unselected package libxss1:armhf. 524s Preparing to unpack .../44-libxss1_1%3a1.2.3-1build2_armhf.deb ... 524s Unpacking libxss1:armhf (1:1.2.3-1build2) ... 524s Selecting previously unselected package libtk8.6:armhf. 524s Preparing to unpack .../45-libtk8.6_8.6.14-1_armhf.deb ... 524s Unpacking libtk8.6:armhf (8.6.14-1) ... 524s Selecting previously unselected package libxt6t64:armhf. 524s Preparing to unpack .../46-libxt6t64_1%3a1.2.1-1.2_armhf.deb ... 524s Unpacking libxt6t64:armhf (1:1.2.1-1.2) ... 524s Selecting previously unselected package node-normalize.css. 524s Preparing to unpack .../47-node-normalize.css_8.0.1-5_all.deb ... 524s Unpacking node-normalize.css (8.0.1-5) ... 524s Selecting previously unselected package zip. 524s Preparing to unpack .../48-zip_3.0-13_armhf.deb ... 524s Unpacking zip (3.0-13) ... 524s Selecting previously unselected package unzip. 524s Preparing to unpack .../49-unzip_6.0-28ubuntu3_armhf.deb ... 524s Unpacking unzip (6.0-28ubuntu3) ... 524s Selecting previously unselected package xdg-utils. 524s Preparing to unpack .../50-xdg-utils_1.1.3-4.1ubuntu3_all.deb ... 524s Unpacking xdg-utils (1.1.3-4.1ubuntu3) ... 524s Selecting previously unselected package r-base-core. 524s Preparing to unpack .../51-r-base-core_4.3.3-2build1_armhf.deb ... 524s Unpacking r-base-core (4.3.3-2build1) ... 525s Selecting previously unselected package r-cran-base64enc. 525s Preparing to unpack .../52-r-cran-base64enc_0.1-3-3_armhf.deb ... 525s Unpacking r-cran-base64enc (0.1-3-3) ... 525s Selecting previously unselected package r-cran-cli. 525s Preparing to unpack .../53-r-cran-cli_3.6.2-1_armhf.deb ... 525s Unpacking r-cran-cli (3.6.2-1) ... 525s Selecting previously unselected package r-cran-colorspace. 525s Preparing to unpack .../54-r-cran-colorspace_2.1-0+dfsg-1_armhf.deb ... 525s Unpacking r-cran-colorspace (2.1-0+dfsg-1) ... 525s Selecting previously unselected package r-cran-commonmark. 525s Preparing to unpack .../55-r-cran-commonmark_1.9.1-1_armhf.deb ... 525s Unpacking r-cran-commonmark (1.9.1-1) ... 525s Selecting previously unselected package r-cran-digest. 525s Preparing to unpack .../56-r-cran-digest_0.6.34-1_armhf.deb ... 525s Unpacking r-cran-digest (0.6.34-1) ... 525s Selecting previously unselected package r-cran-evaluate. 526s Preparing to unpack .../57-r-cran-evaluate_0.23-1_all.deb ... 526s Unpacking r-cran-evaluate (0.23-1) ... 526s Selecting previously unselected package r-cran-fansi. 526s Preparing to unpack .../58-r-cran-fansi_1.0.5-1_armhf.deb ... 526s Unpacking r-cran-fansi (1.0.5-1) ... 526s Selecting previously unselected package r-cran-farver. 526s Preparing to unpack .../59-r-cran-farver_2.1.1-1_armhf.deb ... 526s Unpacking r-cran-farver (2.1.1-1) ... 526s Selecting previously unselected package r-cran-glue. 526s Preparing to unpack .../60-r-cran-glue_1.7.0-1_armhf.deb ... 526s Unpacking r-cran-glue (1.7.0-1) ... 526s Selecting previously unselected package r-cran-rlang. 526s Preparing to unpack .../61-r-cran-rlang_1.1.3-1_armhf.deb ... 526s Unpacking r-cran-rlang (1.1.3-1) ... 526s Selecting previously unselected package r-cran-lifecycle. 526s Preparing to unpack .../62-r-cran-lifecycle_1.0.4+dfsg-1_all.deb ... 526s Unpacking r-cran-lifecycle (1.0.4+dfsg-1) ... 526s Selecting previously unselected package r-cran-gtable. 526s Preparing to unpack .../63-r-cran-gtable_0.3.4+dfsg-1_all.deb ... 526s Unpacking r-cran-gtable (0.3.4+dfsg-1) ... 526s Selecting previously unselected package r-cran-isoband. 526s Preparing to unpack .../64-r-cran-isoband_0.2.7-1_armhf.deb ... 526s Unpacking r-cran-isoband (0.2.7-1) ... 526s Selecting previously unselected package r-cran-mass. 526s Preparing to unpack .../65-r-cran-mass_7.3-60.0.1-1_armhf.deb ... 526s Unpacking r-cran-mass (7.3-60.0.1-1) ... 526s Selecting previously unselected package r-cran-lattice. 526s Preparing to unpack .../66-r-cran-lattice_0.22-5-1_armhf.deb ... 526s Unpacking r-cran-lattice (0.22-5-1) ... 526s Selecting previously unselected package r-cran-nlme. 526s Preparing to unpack .../67-r-cran-nlme_3.1.164-1_armhf.deb ... 526s Unpacking r-cran-nlme (3.1.164-1) ... 526s Selecting previously unselected package r-cran-matrix. 526s Preparing to unpack .../68-r-cran-matrix_1.6-5-1_armhf.deb ... 526s Unpacking r-cran-matrix (1.6-5-1) ... 527s Selecting previously unselected package r-cran-mgcv. 527s Preparing to unpack .../69-r-cran-mgcv_1.9-1-1_armhf.deb ... 527s Unpacking r-cran-mgcv (1.9-1-1) ... 527s Selecting previously unselected package r-cran-labeling. 527s Preparing to unpack .../70-r-cran-labeling_0.4.3-1_all.deb ... 527s Unpacking r-cran-labeling (0.4.3-1) ... 527s Selecting previously unselected package r-cran-munsell. 527s Preparing to unpack .../71-r-cran-munsell_0.5.0-2build1_all.deb ... 527s Unpacking r-cran-munsell (0.5.0-2build1) ... 527s Selecting previously unselected package r-cran-r6. 527s Preparing to unpack .../72-r-cran-r6_2.5.1-1_all.deb ... 527s Unpacking r-cran-r6 (2.5.1-1) ... 527s Selecting previously unselected package r-cran-rcolorbrewer. 527s Preparing to unpack .../73-r-cran-rcolorbrewer_1.1-3-1build1_all.deb ... 527s Unpacking r-cran-rcolorbrewer (1.1-3-1build1) ... 527s Selecting previously unselected package r-cran-viridislite. 527s Preparing to unpack .../74-r-cran-viridislite_0.4.2-2_all.deb ... 527s Unpacking r-cran-viridislite (0.4.2-2) ... 527s Selecting previously unselected package r-cran-scales. 527s Preparing to unpack .../75-r-cran-scales_1.3.0-1_all.deb ... 527s Unpacking r-cran-scales (1.3.0-1) ... 527s Selecting previously unselected package r-cran-magrittr. 527s Preparing to unpack .../76-r-cran-magrittr_2.0.3-1_armhf.deb ... 527s Unpacking r-cran-magrittr (2.0.3-1) ... 527s Selecting previously unselected package r-cran-utf8. 527s Preparing to unpack .../77-r-cran-utf8_1.2.4-1_armhf.deb ... 527s Unpacking r-cran-utf8 (1.2.4-1) ... 527s Selecting previously unselected package r-cran-vctrs. 527s Preparing to unpack .../78-r-cran-vctrs_0.6.5-1_armhf.deb ... 527s Unpacking r-cran-vctrs (0.6.5-1) ... 527s Selecting previously unselected package r-cran-pillar. 527s Preparing to unpack .../79-r-cran-pillar_1.9.0+dfsg-1_all.deb ... 527s Unpacking r-cran-pillar (1.9.0+dfsg-1) ... 527s Selecting previously unselected package r-cran-pkgconfig. 528s Preparing to unpack .../80-r-cran-pkgconfig_2.0.3-2build1_all.deb ... 528s Unpacking r-cran-pkgconfig (2.0.3-2build1) ... 528s Selecting previously unselected package r-cran-tibble. 528s Preparing to unpack .../81-r-cran-tibble_3.2.1+dfsg-2_armhf.deb ... 528s Unpacking r-cran-tibble (3.2.1+dfsg-2) ... 528s Selecting previously unselected package r-cran-withr. 528s Preparing to unpack .../82-r-cran-withr_3.0.0+dfsg-1_all.deb ... 528s Unpacking r-cran-withr (3.0.0+dfsg-1) ... 528s Selecting previously unselected package r-cran-ggplot2. 528s Preparing to unpack .../83-r-cran-ggplot2_3.4.4+dfsg-1_all.deb ... 528s Unpacking r-cran-ggplot2 (3.4.4+dfsg-1) ... 528s Selecting previously unselected package r-cran-xfun. 528s Preparing to unpack .../84-r-cran-xfun_0.41+dfsg-1_armhf.deb ... 528s Unpacking r-cran-xfun (0.41+dfsg-1) ... 528s Selecting previously unselected package r-cran-highr. 528s Preparing to unpack .../85-r-cran-highr_0.10+dfsg-1_all.deb ... 528s Unpacking r-cran-highr (0.10+dfsg-1) ... 528s Selecting previously unselected package r-cran-yaml. 528s Preparing to unpack .../86-r-cran-yaml_2.3.8-1_armhf.deb ... 528s Unpacking r-cran-yaml (2.3.8-1) ... 528s Selecting previously unselected package libjs-mathjax. 528s Preparing to unpack .../87-libjs-mathjax_2.7.9+dfsg-1_all.deb ... 528s Unpacking libjs-mathjax (2.7.9+dfsg-1) ... 530s Selecting previously unselected package r-cran-knitr. 530s Preparing to unpack .../88-r-cran-knitr_1.45+dfsg-1_all.deb ... 530s Unpacking r-cran-knitr (1.45+dfsg-1) ... 530s Selecting previously unselected package r-cran-markdown. 530s Preparing to unpack .../89-r-cran-markdown_1.12+dfsg-1_all.deb ... 530s Unpacking r-cran-markdown (1.12+dfsg-1) ... 530s Selecting previously unselected package r-cran-matrixstats. 530s Preparing to unpack .../90-r-cran-matrixstats_1.2.0-1_armhf.deb ... 530s Unpacking r-cran-matrixstats (1.2.0-1) ... 530s Selecting previously unselected package r-cran-r.methodss3. 530s Preparing to unpack .../91-r-cran-r.methodss3_1.8.2-1_all.deb ... 530s Unpacking r-cran-r.methodss3 (1.8.2-1) ... 530s Selecting previously unselected package r-cran-r.oo. 530s Preparing to unpack .../92-r-cran-r.oo_1.26.0-1_all.deb ... 530s Unpacking r-cran-r.oo (1.26.0-1) ... 530s Selecting previously unselected package r-cran-r.utils. 530s Preparing to unpack .../93-r-cran-r.utils_2.12.3-1_all.deb ... 530s Unpacking r-cran-r.utils (2.12.3-1) ... 530s Selecting previously unselected package r-cran-r.cache. 530s Preparing to unpack .../94-r-cran-r.cache_0.16.0-1_all.deb ... 530s Unpacking r-cran-r.cache (0.16.0-1) ... 530s Selecting previously unselected package r-cran-r.devices. 530s Preparing to unpack .../95-r-cran-r.devices_2.17.2+ds-1_all.deb ... 530s Unpacking r-cran-r.devices (2.17.2+ds-1) ... 531s Selecting previously unselected package tcl8.6. 531s Preparing to unpack .../96-tcl8.6_8.6.14+dfsg-1_armhf.deb ... 531s Unpacking tcl8.6 (8.6.14+dfsg-1) ... 531s Selecting previously unselected package tcl. 531s Preparing to unpack .../97-tcl_8.6.14_armhf.deb ... 531s Unpacking tcl (8.6.14) ... 531s Selecting previously unselected package r-cran-r.rsp. 531s Preparing to unpack .../98-r-cran-r.rsp_0.46.0+ds-1_all.deb ... 531s Unpacking r-cran-r.rsp (0.46.0+ds-1) ... 531s Selecting previously unselected package autopkgtest-satdep. 531s Preparing to unpack .../99-1-autopkgtest-satdep.deb ... 531s Unpacking autopkgtest-satdep (0) ... 531s Setting up libgraphite2-3:armhf (1.3.14-2) ... 531s Setting up libpixman-1-0:armhf (0.42.2-1) ... 531s Setting up libsharpyuv0:armhf (1.3.2-0.4build2) ... 531s Setting up libpaper1:armhf (1.1.29) ... 531s 531s Creating config file /etc/papersize with new version 531s Setting up fonts-mathjax (2.7.9+dfsg-1) ... 531s Setting up liblerc4:armhf (4.0.0+ds-4ubuntu1) ... 531s Setting up libjs-mathjax (2.7.9+dfsg-1) ... 531s Setting up libxrender1:armhf (1:0.9.10-1.1) ... 531s Setting up libdatrie1:armhf (0.2.13-3) ... 531s Setting up libxcb-render0:armhf (1.15-1) ... 531s Setting up fonts-glyphicons-halflings (1.009~3.4.1+dfsg-3) ... 531s Setting up unzip (6.0-28ubuntu3) ... 531s Setting up x11-common (1:7.7+23ubuntu2) ... 532s Setting up libdeflate0:armhf (1.19-1) ... 532s Setting up libxcb-shm0:armhf (1.15-1) ... 532s Setting up libpaper-utils (1.1.29) ... 532s Setting up libgomp1:armhf (14-20240315-1ubuntu1) ... 532s Setting up libjbig0:armhf (2.1-6.1ubuntu1) ... 532s Setting up zip (3.0-13) ... 532s Setting up libblas3:armhf (3.12.0-3) ... 532s update-alternatives: using /usr/lib/arm-linux-gnueabihf/blas/libblas.so.3 to provide /usr/lib/arm-linux-gnueabihf/libblas.so.3 (libblas.so.3-arm-linux-gnueabihf) in auto mode 532s Setting up libfreetype6:armhf (2.13.2+dfsg-1build2) ... 532s Setting up fonts-dejavu-mono (2.37-8) ... 532s Setting up libtcl8.6:armhf (8.6.14+dfsg-1) ... 532s Setting up fonts-dejavu-core (2.37-8) ... 532s Setting up libjpeg-turbo8:armhf (2.1.5-2ubuntu1) ... 532s Setting up libgfortran5:armhf (14-20240315-1ubuntu1) ... 532s Setting up libwebp7:armhf (1.3.2-0.4build2) ... 532s Setting up libjs-highlight.js (9.18.5+dfsg1-2) ... 532s Setting up libharfbuzz0b:armhf (8.3.0-2build1) ... 532s Setting up libthai-data (0.1.29-2) ... 532s Setting up libxss1:armhf (1:1.2.3-1build2) ... 532s Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 532s Setting up node-normalize.css (8.0.1-5) ... 532s Setting up xdg-utils (1.1.3-4.1ubuntu3) ... 532s update-alternatives: using /usr/bin/xdg-open to provide /usr/bin/open (open) in auto mode 532s Setting up libjs-bootstrap (3.4.1+dfsg-3) ... 532s Setting up libjpeg8:armhf (8c-2ubuntu11) ... 532s Setting up libice6:armhf (2:1.0.10-1build2) ... 532s Setting up tcl8.6 (8.6.14+dfsg-1) ... 532s Setting up liblapack3:armhf (3.12.0-3) ... 532s update-alternatives: using /usr/lib/arm-linux-gnueabihf/lapack/liblapack.so.3 to provide /usr/lib/arm-linux-gnueabihf/liblapack.so.3 (liblapack.so.3-arm-linux-gnueabihf) in auto mode 532s Setting up fontconfig-config (2.15.0-1.1ubuntu1) ... 532s Setting up libjs-jquery-datatables (1.11.5+dfsg-2) ... 532s Setting up libthai0:armhf (0.1.29-2) ... 532s Setting up libtiff6:armhf (4.5.1+git230720-4ubuntu1) ... 532s Setting up tcl (8.6.14) ... 532s Setting up libfontconfig1:armhf (2.15.0-1.1ubuntu1) ... 532s Setting up libsm6:armhf (2:1.2.3-1build2) ... 532s Setting up fontconfig (2.15.0-1.1ubuntu1) ... 535s Regenerating fonts cache... done. 535s Setting up libxft2:armhf (2.3.6-1) ... 535s Setting up libtk8.6:armhf (8.6.14-1) ... 535s Setting up libpango-1.0-0:armhf (1.52.1+ds-1) ... 535s Setting up libcairo2:armhf (1.18.0-1ubuntu1) ... 535s Setting up libxt6t64:armhf (1:1.2.1-1.2) ... 535s Setting up libpangoft2-1.0-0:armhf (1.52.1+ds-1) ... 535s Setting up libpangocairo-1.0-0:armhf (1.52.1+ds-1) ... 535s Setting up r-base-core (4.3.3-2build1) ... 535s 535s Creating config file /etc/R/Renviron with new version 535s Setting up r-cran-labeling (0.4.3-1) ... 535s Setting up r-cran-lattice (0.22-5-1) ... 535s Setting up r-cran-nlme (3.1.164-1) ... 535s Setting up r-cran-farver (2.1.1-1) ... 535s Setting up r-cran-viridislite (0.4.2-2) ... 535s Setting up r-cran-commonmark (1.9.1-1) ... 535s Setting up r-cran-r6 (2.5.1-1) ... 535s Setting up r-cran-magrittr (2.0.3-1) ... 535s Setting up r-cran-rlang (1.1.3-1) ... 535s Setting up r-cran-matrixstats (1.2.0-1) ... 535s Setting up r-cran-xfun (0.41+dfsg-1) ... 535s Setting up r-cran-withr (3.0.0+dfsg-1) ... 535s Setting up r-cran-base64enc (0.1-3-3) ... 535s Setting up r-cran-digest (0.6.34-1) ... 535s Setting up r-cran-yaml (2.3.8-1) ... 535s Setting up r-cran-evaluate (0.23-1) ... 535s Setting up r-cran-highr (0.10+dfsg-1) ... 535s Setting up r-cran-fansi (1.0.5-1) ... 535s Setting up r-cran-mass (7.3-60.0.1-1) ... 535s Setting up r-cran-glue (1.7.0-1) ... 535s Setting up r-cran-cli (3.6.2-1) ... 535s Setting up r-cran-lifecycle (1.0.4+dfsg-1) ... 535s Setting up r-cran-r.methodss3 (1.8.2-1) ... 535s Setting up r-cran-pkgconfig (2.0.3-2build1) ... 535s Setting up r-cran-utf8 (1.2.4-1) ... 535s Setting up r-cran-colorspace (2.1-0+dfsg-1) ... 535s Setting up r-cran-markdown (1.12+dfsg-1) ... 535s Setting up r-cran-rcolorbrewer (1.1-3-1build1) ... 535s Setting up r-cran-isoband (0.2.7-1) ... 535s Setting up r-cran-gtable (0.3.4+dfsg-1) ... 535s Setting up r-cran-matrix (1.6-5-1) ... 535s Setting up r-cran-knitr (1.45+dfsg-1) ... 535s Setting up r-cran-mgcv (1.9-1-1) ... 535s Setting up r-cran-vctrs (0.6.5-1) ... 535s Setting up r-cran-pillar (1.9.0+dfsg-1) ... 535s Setting up r-cran-munsell (0.5.0-2build1) ... 535s Setting up r-cran-tibble (3.2.1+dfsg-2) ... 535s Setting up r-cran-r.oo (1.26.0-1) ... 535s Setting up r-cran-scales (1.3.0-1) ... 535s Setting up r-cran-r.utils (2.12.3-1) ... 535s Setting up r-cran-ggplot2 (3.4.4+dfsg-1) ... 535s Setting up r-cran-r.devices (2.17.2+ds-1) ... 535s Setting up r-cran-r.cache (0.16.0-1) ... 535s Setting up r-cran-r.rsp (0.46.0+ds-1) ... 535s Setting up autopkgtest-satdep (0) ... 535s Processing triggers for man-db (2.12.0-3build4) ... 536s Processing triggers for install-info (7.1-3build1) ... 536s Processing triggers for libc-bin (2.39-0ubuntu6) ... 611s (Reading database ... 69462 files and directories currently installed.) 611s Removing autopkgtest-satdep (0) ... 616s autopkgtest [12:28:16]: test run-unit-test: [----------------------- 619s 619s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 619s Copyright (C) 2024 The R Foundation for Statistical Computing 619s Platform: arm-unknown-linux-gnueabihf (32-bit) 619s 619s R is free software and comes with ABSOLUTELY NO WARRANTY. 619s You are welcome to redistribute it under certain conditions. 619s Type 'license()' or 'licence()' for distribution details. 619s 619s R is a collaborative project with many contributors. 619s Type 'contributors()' for more information and 619s 'citation()' on how to cite R or R packages in publications. 619s 619s Type 'demo()' for some demos, 'help()' for on-line help, or 619s 'help.start()' for an HTML browser interface to help. 619s Type 'q()' to quit R. 619s 619s > library("matrixStats") 619s > 619s > allocArray_R <- function(nrow, ncol, value = NA) { 619s + array(data = value, dim = dim) 619s + } 619s > 619s > values <- list( 619s + -1L, 0L, +1L, NA_integer_, .Machine$integer.max, 619s + -1, 0, +1, NA_real_, NaN, -Inf, +Inf, 619s + .Machine$double.xmin, .Machine$double.xmax, 619s + .Machine$double.eps, .Machine$double.neg.eps, 619s + FALSE, TRUE, NA 619s + ) 619s > 619s > dim <- c(2L, 4L, 3L) 619s > for (value in values) { 619s + x0 <- allocArray_R(dim, value = value) 619s + x <- allocArray(dim, value = value) 619s + if (!identical(x, x0)) { 619s + str(list(dim = dim, value = value, x = x, x0 = x0)) 619s + stopifnot(identical(x, x0)) 619s + } 619s + } 619s > 619s 619s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 619s Copyright (C) 2024 The R Foundation for Statistical Computing 619s Platform: arm-unknown-linux-gnueabihf (32-bit) 619s 619s R is free software and comes with ABSOLUTELY NO WARRANTY. 619s You are welcome to redistribute it under certain conditions. 619s Type 'license()' or 'licence()' for distribution details. 619s 619s R is a collaborative project with many contributors. 619s Type 'contributors()' for more information and 619s 'citation()' on how to cite R or R packages in publications. 619s 619s Type 'demo()' for some demos, 'help()' for on-line help, or 619s 'help.start()' for an HTML browser interface to help. 619s Type 'q()' to quit R. 619s 619s > library("matrixStats") 619s > 619s > allocMatrix_R <- function(nrow, ncol, value = NA) { 619s + matrix(data = value, nrow = nrow, ncol = ncol) 619s + } 619s > 619s > values <- list( 619s + -1L, 0L, +1L, NA_integer_, .Machine$integer.max, 619s + -1, 0, +1, NA_real_, NaN, -Inf, +Inf, 619s + .Machine$double.xmin, .Machine$double.xmax, 619s + .Machine$double.eps, .Machine$double.neg.eps, 619s + FALSE, TRUE, NA 619s + ) 619s > 619s > nrow <- 2L 619s > ncol <- 3L 619s > for (value in values) { 619s + x0 <- allocMatrix_R(nrow, ncol, value = value) 619s + x <- allocMatrix(nrow, ncol, value = value) 619s + if (!identical(x, x0)) { 619s + str(list(nrow = nrow, ncol = ncol, value = value, x = x, x0 = x0)) 619s + stopifnot(identical(x, x0)) 619s + } 619s + } 619s > 620s 620s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 620s Copyright (C) 2024 The R Foundation for Statistical Computing 620s Platform: arm-unknown-linux-gnueabihf (32-bit) 620s 620s R is free software and comes with ABSOLUTELY NO WARRANTY. 620s You are welcome to redistribute it under certain conditions. 620s Type 'license()' or 'licence()' for distribution details. 620s 620s R is a collaborative project with many contributors. 620s Type 'contributors()' for more information and 620s 'citation()' on how to cite R or R packages in publications. 620s 620s Type 'demo()' for some demos, 'help()' for on-line help, or 620s 'help.start()' for an HTML browser interface to help. 620s Type 'q()' to quit R. 620s 620s > library("matrixStats") 620s > 620s > allocVector_R <- function(length, value = NA) { 620s + x <- vector(mode = typeof(value), length = length) 620s + if (!is.finite(value) || value != 0) x[] <- value 620s + x 620s + } 620s > 620s > values <- list( 620s + -1L, 0L, +1L, NA_integer_, .Machine$integer.max, 620s + -1, 0, +1, NA_real_, NaN, -Inf, +Inf, 620s + .Machine$double.xmin, .Machine$double.xmax, 620s + .Machine$double.eps, .Machine$double.neg.eps, 620s + FALSE, TRUE, NA 620s + ) 620s > 620s > n <- 10L 620s > for (value in values) { 620s + x0 <- allocVector_R(n, value = value) 620s + x <- allocVector(n, value = value) 620s + if (!identical(x, x0)) { 620s + str(list(n = n, value = value, x = x, x0 = x0)) 620s + stopifnot(identical(x, x0)) 620s + } 620s + } 620s > 620s 620s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 620s Copyright (C) 2024 The R Foundation for Statistical Computing 620s Platform: arm-unknown-linux-gnueabihf (32-bit) 620s 620s R is free software and comes with ABSOLUTELY NO WARRANTY. 620s You are welcome to redistribute it under certain conditions. 620s Type 'license()' or 'licence()' for distribution details. 620s 620s R is a collaborative project with many contributors. 620s Type 'contributors()' for more information and 620s 'citation()' on how to cite R or R packages in publications. 620s 620s Type 'demo()' for some demos, 'help()' for on-line help, or 620s 'help.start()' for an HTML browser interface to help. 620s Type 'q()' to quit R. 620s 620s > library("matrixStats") 620s > 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > # Setup 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > data <- data.frame( 620s + logical = c(TRUE, FALSE, TRUE), 620s + integer = 1:3, 620s + double = seq(from = 1.0, to = 3.0, by = 1.0), 620s + complex = seq(from = 1.0, to = 3.0, by = 1.0) + 1.0i, 620s + character = letters[1:3], 620s + stringsAsFactors = FALSE 620s + ) 620s > 620s > modes <- names(data) 620s > 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > # Special cases 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > cat("NULL...\n") 620s NULL... 620s > stopifnot(identical(anyMissing(NULL), FALSE)) 620s > cat("NULL...done\n") 620s NULL...done 620s > 620s > cat("raw...\n") 620s raw... 620s > stopifnot(identical(anyMissing(as.raw(0:2)), FALSE)) 620s > cat("raw...done\n") 620s raw...done 620s > 620s > cat("list(NULL)...\n") 620s list(NULL)... 620s > stopifnot(identical(anyMissing(list(NULL)), FALSE)) 620s > cat("list(NULL)...done\n") 620s list(NULL)...done 620s > 620s > 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > # Scalars, vectors, and matrices of various modes 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > for (mode in modes) { 620s + cat(sprintf("Mode: %s...\n", mode)) 620s + values <- data[[mode]] 620s + 620s + # Scalars 620s + cat(" scalar\n") 620s + x <- values[1L] 620s + print(x) 620s + stopifnot(identical(anyMissing(x), FALSE)) 620s + is.na(x) <- TRUE 620s + print(x) 620s + stopifnot(identical(anyMissing(x), TRUE)) 620s + 620s + # Vectors 620s + cat(" vector\n") 620s + x <- values 620s + print(x) 620s + stopifnot(identical(anyMissing(x), FALSE)) 620s + is.na(x)[2L] <- TRUE 620s + print(x) 620s + stopifnot(identical(anyMissing(x), TRUE)) 620s + 620s + # Matrices 620s + cat(" matrix\n") 620s + x <- matrix(c(values, values), ncol = 2L) 620s + print(x) 620s + stopifnot(identical(anyMissing(x), FALSE)) 620s + is.na(x)[2L] <- TRUE 620s + print(x) 620s + stopifnot(identical(anyMissing(x), TRUE)) 620s + 620s + cat(sprintf("Mode: %s...done\n", mode)) 620s + } # for (mode ...) 620s Mode: logical... 620s scalar 620s [1] TRUE 620s [1] NA 620s vector 620s [1] TRUE FALSE TRUE 620s [1] TRUE NA TRUE 620s matrix 620s [,1] [,2] 620s [1,] TRUE TRUE 620s [2,] FALSE FALSE 620s [3,] TRUE TRUE 620s [,1] [,2] 620s [1,] TRUE TRUE 620s [2,] NA FALSE 620s [3,] TRUE TRUE 620s Mode: logical...done 620s Mode: integer... 620s scalar 620s [1] 1 620s [1] NA 620s vector 620s [1] 1 2 3 620s [1] 1 NA 3 620s matrix 620s [,1] [,2] 620s [1,] 1 1 620s [2,] 2 2 620s [3,] 3 3 620s [,1] [,2] 620s [1,] 1 1 620s [2,] NA 2 620s [3,] 3 3 620s Mode: integer...done 620s Mode: double... 620s scalar 620s [1] 1 620s [1] NA 620s vector 620s [1] 1 2 3 620s [1] 1 NA 3 620s matrix 620s [,1] [,2] 620s [1,] 1 1 620s [2,] 2 2 620s [3,] 3 3 620s [,1] [,2] 620s [1,] 1 1 620s [2,] NA 2 620s [3,] 3 3 620s Mode: double...done 620s Mode: complex... 620s scalar 620s [1] 1+1i 620s [1] NA 620s vector 620s [1] 1+1i 2+1i 3+1i 620s [1] 1+1i NA 3+1i 620s matrix 620s [,1] [,2] 620s [1,] 1+1i 1+1i 620s [2,] 2+1i 2+1i 620s [3,] 3+1i 3+1i 620s [,1] [,2] 620s [1,] 1+1i 1+1i 620s [2,] NA 2+1i 620s [3,] 3+1i 3+1i 620s Mode: complex...done 620s Mode: character... 620s scalar 620s [1] "a" 620s [1] NA 620s vector 620s [1] "a" "b" "c" 620s [1] "a" NA "c" 620s matrix 620s [,1] [,2] 620s [1,] "a" "a" 620s [2,] "b" "b" 620s [3,] "c" "c" 620s [,1] [,2] 620s [1,] "a" "a" 620s [2,] NA "b" 620s [3,] "c" "c" 620s Mode: character...done 620s > 620s > 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > # Data frames 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > cat("data.frame...\n") 620s data.frame... 620s > x <- data 620s > stopifnot(identical(anyMissing(x), FALSE)) 620s > for (mode in modes) { 620s + x <- data 620s + is.na(x[[mode]])[2L] <- TRUE 620s + print(x) 620s + stopifnot(identical(anyMissing(x), TRUE)) 620s + } # for (mode ...) 620s logical integer double complex character 620s 1 TRUE 1 1 1+1i a 620s 2 NA 2 2 2+1i b 620s 3 TRUE 3 3 3+1i c 620s logical integer double complex character 620s 1 TRUE 1 1 1+1i a 620s 2 FALSE NA 2 2+1i b 620s 3 TRUE 3 3 3+1i c 620s logical integer double complex character 620s 1 TRUE 1 1 1+1i a 620s 2 FALSE 2 NA 2+1i b 620s 3 TRUE 3 3 3+1i c 620s logical integer double complex character 620s 1 TRUE 1 1 1+1i a 620s 2 FALSE 2 2 NA b 620s 3 TRUE 3 3 3+1i c 620s logical integer double complex character 620s 1 TRUE 1 1 1+1i a 620s 2 FALSE 2 2 2+1i 620s 3 TRUE 3 3 3+1i c 620s > cat("data.frame...done\n") 620s data.frame...done 620s > 620s > 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > # Lists 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > cat("list...\n") 620s list... 620s > x <- as.list(data) 620s > stopifnot(identical(anyMissing(x), FALSE)) 620s > for (mode in modes) { 620s + x <- as.list(data) 620s + is.na(x[[mode]])[2L] <- TRUE 620s + print(x) 620s + stopifnot(identical(anyMissing(x), TRUE)) 620s + } # for (mode ...) 620s $logical 620s [1] TRUE NA TRUE 620s 620s $integer 620s [1] 1 2 3 620s 620s $double 620s [1] 1 2 3 620s 620s $complex 620s [1] 1+1i 2+1i 3+1i 620s 620s $character 620s [1] "a" "b" "c" 620s 620s $logical 620s [1] TRUE FALSE TRUE 620s 620s $integer 620s [1] 1 NA 3 620s 620s $double 620s [1] 1 2 3 620s 620s $complex 620s [1] 1+1i 2+1i 3+1i 620s 620s $character 620s [1] "a" "b" "c" 620s 620s $logical 620s [1] TRUE FALSE TRUE 620s 620s $integer 620s [1] 1 2 3 620s 620s $double 620s [1] 1 NA 3 620s 620s $complex 620s [1] 1+1i 2+1i 3+1i 620s 620s $character 620s [1] "a" "b" "c" 620s 620s $logical 620s [1] TRUE FALSE TRUE 620s 620s $integer 620s [1] 1 2 3 620s 620s $double 620s [1] 1 2 3 620s 620s $complex 620s [1] 1+1i NA 3+1i 620s 620s $character 620s [1] "a" "b" "c" 620s 620s $logical 620s [1] TRUE FALSE TRUE 620s 620s $integer 620s [1] 1 2 3 620s 620s $double 620s [1] 1 2 3 620s 620s $complex 620s [1] 1+1i 2+1i 3+1i 620s 620s $character 620s [1] "a" NA "c" 620s 620s > cat("list...done\n") 620s list...done 620s > 621s 621s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 621s Copyright (C) 2024 The R Foundation for Statistical Computing 621s Platform: arm-unknown-linux-gnueabihf (32-bit) 621s 621s R is free software and comes with ABSOLUTELY NO WARRANTY. 621s You are welcome to redistribute it under certain conditions. 621s Type 'license()' or 'licence()' for distribution details. 621s 621s R is a collaborative project with many contributors. 621s Type 'contributors()' for more information and 621s 'citation()' on how to cite R or R packages in publications. 621s 621s Type 'demo()' for some demos, 'help()' for on-line help, or 621s 'help.start()' for an HTML browser interface to help. 621s Type 'q()' to quit R. 621s 621s > library("matrixStats") 621s > 621s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 621s > # Subsetted tests 621s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 621s > source("utils/validateIndicesFramework.R") 621s > x <- runif(4, min = -3, max = 3) 621s > x[2] <- NA 621s > for (mode in c("integer", "numeric")) { 621s + storage.mode(x) <- mode 621s + for (idxs in index_cases) { 621s + validateIndicesTestVector(x, idxs, 621s + ftest = anyMissing, fsure = function(x, ...) { 621s + anyValue(x, value = NA) 621s + }) 621s + } 621s + } 621s > 621s 621s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 621s Copyright (C) 2024 The R Foundation for Statistical Computing 621s Platform: arm-unknown-linux-gnueabihf (32-bit) 621s 621s R is free software and comes with ABSOLUTELY NO WARRANTY. 621s You are welcome to redistribute it under certain conditions. 621s Type 'license()' or 'licence()' for distribution details. 621s 621s R is a collaborative project with many contributors. 621s Type 'contributors()' for more information and 621s 'citation()' on how to cite R or R packages in publications. 621s 621s Type 'demo()' for some demos, 'help()' for on-line help, or 621s 'help.start()' for an HTML browser interface to help. 621s Type 'q()' to quit R. 621s 621s > ## 1. Don't test with valgrind 621s > ## 2. Test only R (>= 3.0.2) because of that's what knitr requires 621s > if (getRversion() >= "3.0.2" && Sys.getenv("_R_CHECK_USE_VALGRIND_") == "") { 621s + 621s + ## 3. Make sure all suggested packages are installed / can be loaded 621s + pkgs <- c("base64enc", "ggplot2", "knitr", "markdown", "microbenchmark", 621s + "R.devices", "R.rsp") 621s + if (all(unlist(lapply(pkgs, FUN = requireNamespace)))) { 621s + html <- matrixStats:::benchmark("binCounts") 621s + print(html) 621s + } 621s + 621s + rm(list = "pkgs") 621s + 621s + } 621s Loading required namespace: base64enc 621s Loading required namespace: ggplot2 623s Loading required namespace: knitr 623s Loading required namespace: markdown 623s Loading required namespace: microbenchmark 623s Failed with error: ‘there is no package called ‘microbenchmark’’ 623s Loading required namespace: R.devices 623s Loading required namespace: R.rsp 623s > 624s 624s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 624s Copyright (C) 2024 The R Foundation for Statistical Computing 624s Platform: arm-unknown-linux-gnueabihf (32-bit) 624s 624s R is free software and comes with ABSOLUTELY NO WARRANTY. 624s You are welcome to redistribute it under certain conditions. 624s Type 'license()' or 'licence()' for distribution details. 624s 624s R is a collaborative project with many contributors. 624s Type 'contributors()' for more information and 624s 'citation()' on how to cite R or R packages in publications. 624s 624s Type 'demo()' for some demos, 'help()' for on-line help, or 624s 'help.start()' for an HTML browser interface to help. 624s Type 'q()' to quit R. 624s 624s > library("matrixStats") 624s > library("stats") 624s > 624s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 624s > # Local functions 624s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 624s > binCounts_hist <- function(x, bx, right = FALSE, ...) { 624s + n0 <- graphics::hist(x, breaks = bx, right = right, 624s + include.lowest = TRUE, plot = FALSE)$counts 624s + } 624s > 624s > 624s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 624s > # Non-sorted and sorted positions 624s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 624s > nx <- 1000L # Number of data points 624s > nb <- 200L # Number of bins 624s > 624s > # Uniformely distributed bins 624s > bx <- seq(from = 0, to = 1, length.out = nb + 1L) 624s > bx <- c(-1, bx, 2) 624s > 624s > # Sample data points 624s > set.seed(0xBEEF) 624s > x <- runif(nx, min = 0, max = 1) 624s > 624s > for (kk in 1:2) { 624s + n0 <- binCounts_hist(x, bx = bx) 624s + n1 <- binCounts(x, bx = bx) 624s + # Sanity check 624s + stopifnot(identical(n1, n0)) 624s + 624s + # Check reversed 624s + n1r <- rev(binCounts(-x, bx = rev(-bx), right = TRUE)) 624s + stopifnot(identical(n1r, n1)) 624s + 624s + # Retry with a sorted vector 624s + x <- sort(x) 624s + } # for (kk in 1:2) 624s > 624s > 624s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 624s > # Missing values 624s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 624s > x <- 1:40 624s > x[20] <- NA_integer_ 624s > nx <- length(x) 624s > 624s > # Bins 624s > bx <- c(0.5, 50.5, 100.5, 150.5, 200.5) 624s > 624s > y_smooth0 <- binCounts_hist(x, bx = bx) 624s > y_smooth <- binCounts(x, bx = bx) 624s > # Sanity check 624s > stopifnot(all.equal(y_smooth, y_smooth0)) 624s > 624s > 624s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 624s > # Border cases 624s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 624s > x <- 1:10 624s > bx <- min(x) - c(10, 1) 624s > y_smooth <- binCounts(x, bx = bx) 624s > stopifnot(all.equal(y_smooth, 0L)) 624s > bx <- range(x) 624s > y_smooth <- binCounts(x, bx = bx) 624s > stopifnot(all.equal(y_smooth, length(x) - 1L)) 624s > bx <- max(x) + c(1, 10) 624s > y_smooth <- binCounts(x, bx = bx) 624s > stopifnot(all.equal(y_smooth, 0L)) 624s > 624s > # Every second empty 624s > x <- 1:10 624s > bx <- rep(x, each = 2L) 624s > y_smooth <- binCounts(x, bx = bx) 624s > stopifnot(all.equal(y_smooth, rep(c(0L, 1L), length.out = length(bx) - 1L))) 624s > ## NOTE: binCounts_hist() does not give the same last bin count 624s > 624s > 624s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 624s > # Exception handling 624s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 624s > # Zero bin bounderies (invalid bin definition) 624s > bx <- double(0L) 624s > res <- try(y_smooth <- binCounts(1:10, bx = bx), silent = TRUE) 624s > stopifnot(inherits(res, "try-error")) 624s > 624s > # One bin boundery (invalid bin definition) 624s > bx <- double(1L) 624s > res <- try(y_smooth <- binCounts(1:10, bx = bx), silent = TRUE) 624s > stopifnot(inherits(res, "try-error")) 624s > 624s 624s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 624s Copyright (C) 2024 The R Foundation for Statistical Computing 624s Platform: arm-unknown-linux-gnueabihf (32-bit) 624s 624s R is free software and comes with ABSOLUTELY NO WARRANTY. 624s You are welcome to redistribute it under certain conditions. 624s Type 'license()' or 'licence()' for distribution details. 624s 624s R is a collaborative project with many contributors. 624s Type 'contributors()' for more information and 624s 'citation()' on how to cite R or R packages in publications. 624s 624s Type 'demo()' for some demos, 'help()' for on-line help, or 624s 'help.start()' for an HTML browser interface to help. 624s Type 'q()' to quit R. 624s 624s > library("matrixStats") 624s > 624s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 624s > # Local functions 624s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 624s > binCounts_hist <- function(x, bx, right = FALSE, ...) { 624s + n0 <- graphics::hist(x, breaks = bx, right = right, 624s + include.lowest = TRUE, plot = FALSE)$counts 624s + } 624s > 624s > 624s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 624s > # Subsetted tests 624s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 624s > source("utils/validateIndicesFramework.R") 624s > x <- runif(6, min = -6, max = 6) 624s > storage.mode(x) <- "integer" 624s > bx <- c(-6, 0, 3, 4, 10) 624s > for (idxs in index_cases) { 624s + validateIndicesTestVector(x, idxs, 624s + ftest = binCounts, fsure = binCounts_hist, 624s + bx = bx, right = FALSE) 624s + validateIndicesTestVector(x, idxs, 624s + ftest = binCounts, fsure = binCounts_hist, 624s + bx = bx, right = TRUE) 624s + } 625s > 625s 625s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 625s Copyright (C) 2024 The R Foundation for Statistical Computing 625s Platform: arm-unknown-linux-gnueabihf (32-bit) 625s 625s R is free software and comes with ABSOLUTELY NO WARRANTY. 625s You are welcome to redistribute it under certain conditions. 625s Type 'license()' or 'licence()' for distribution details. 625s 625s R is a collaborative project with many contributors. 625s Type 'contributors()' for more information and 625s 'citation()' on how to cite R or R packages in publications. 625s 625s Type 'demo()' for some demos, 'help()' for on-line help, or 625s 'help.start()' for an HTML browser interface to help. 625s Type 'q()' to quit R. 625s 625s > library("matrixStats") 625s > library("stats") 625s > 625s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 625s > # Naive R implementation of binMeans() 625s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 625s > binMeans0 <- function(y, x, bx, na.rm = TRUE, count = TRUE, right = FALSE) { 625s + n_smooth <- length(bx) - 1L 625s + res <- double(n_smooth) 625s + counts <- rep(NaN, times = n_smooth) 625s + 625s + if (na.rm) { 625s + keep <- !is.na(x) & !is.na(y) 625s + x <- x[keep] 625s + y <- y[keep] 625s + } 625s + 625s + # For each bin... 625s + for (kk in seq_len(n_smooth)) { 625s + if (right) { 625s + idxs <- which(bx[kk] < x & x <= bx[kk + 1L]) 625s + } else { 625s + idxs <- which(bx[kk] <= x & x < bx[kk + 1L]) 625s + } 625s + y_kk <- y[idxs] 625s + res[kk] <- mean(y_kk) 625s + counts[kk] <- length(idxs) 625s + } # for (kk ...) 625s + 625s + if (count) attr(res, "count") <- counts 625s + res 625s + } 625s > 625s > 625s > 625s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 625s > # Case #1 625s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 625s > x <- 1:100 625s > nx <- length(x) 625s > y <- double(nx) 625s > y[1:25] <- 5 625s > y[51:75] <- -5 625s > y <- y + rnorm(nx) 625s > 625s > # Bins 625s > bx <- c(0.5, 25.5, 50.5, 75.5, 100.5) 625s > 625s > y_smooth0 <- binMeans0(y, x = x, bx = bx) 625s > y_smooth <- binMeans(y, x = x, bx = bx) 625s > n_smooth <- binCounts(x, bx = bx) 625s > # Sanity check 625s > stopifnot(all.equal(y_smooth, y_smooth0)) 625s > stopifnot(all.equal(attr(y_smooth, "count"), n_smooth)) 625s > 625s > y_smooth0r <- rev(binMeans0(y, x = -x, bx = rev(-bx), 625s + count = FALSE, right = TRUE)) 625s > y_smoothr <- rev(binMeans(y, x = -x, bx = rev(-bx), 625s + count = FALSE, right = TRUE)) 625s > # Sanity check 625s > stopifnot(all.equal(y_smooth0r, y_smooth0, check.attributes = FALSE)) 625s > stopifnot(all.equal(y_smoothr, y_smooth0r)) 625s > 625s > 625s > # Integer input 625s > y <- as.integer(y) 625s > y_smooth0 <- binMeans0(y, x = x, bx = bx) 625s > y_smooth <- binMeans(y, x = x, bx = bx) 625s > n_smooth <- binCounts(x, bx = bx) 625s > # Sanity check 625s > stopifnot(is.integer(y), 625s + all.equal(y_smooth, y_smooth0), 625s + all.equal(attr(y_smooth, "count"), n_smooth)) 625s > 625s > # Logical input 625s > y <- as.logical(y) 625s > y_smooth0 <- binMeans0(y, x = x, bx = bx) 625s > y_smooth <- binMeans(y, x = x, bx = bx) 625s > n_smooth <- binCounts(x, bx = bx) 625s > # Sanity check 625s > stopifnot(is.logical(y), 625s + all.equal(y_smooth, y_smooth0), 625s + all.equal(attr(y_smooth, "count"), n_smooth)) 625s > 625s > 625s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 625s > # Case #2 625s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 625s > nx <- 1e3 625s > x <- runif(nx) 625s > y <- runif(nx) 625s > 625s > nb <- 10 625s > bx <- do.call(seq, c(as.list(range(x)), length.out = nb)) 625s > bx1 <- c(bx[-1], bx[nb] + 1) 625s > 625s > y_smooth0 <- binMeans0(y, x = x, bx = bx1) 625s > y_smooth <- binMeans(y, x = x, bx = bx1) 625s > n_smooth <- binCounts(x, bx = bx1) 625s > y_smoothr <- rev(binMeans(y, x = -x, bx = rev(-bx1), right = TRUE)) 625s > 625s > # Sanity check 625s > stopifnot(all.equal(y_smooth, y_smooth0)) 625s > stopifnot(all.equal(attr(y_smooth, "count"), n_smooth)) 625s > stopifnot(all.equal(y_smoothr, y_smooth, check.attributes = FALSE)) 625s > 625s > 625s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 625s > # Empty bins 625s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 625s > x <- c(6:8, 16:19) 625s > nx <- length(x) 625s > y <- runif(nx) 625s > bx <- c(0, 5, 10, 15, 20, 25) 625s > y_smooth0 <- binMeans0(y, x = x, bx = bx) 625s > y_smooth <- binMeans(y, x = x, bx = bx) 625s > n_smooth <- binCounts(x, bx = bx) 625s > stopifnot(all.equal(attr(y_smooth, "count"), n_smooth)) 625s > stopifnot(all.equal(y_smooth, y_smooth0)) 625s > 625s > 625s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 625s > # Missing values 625s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 625s > x <- 1:100 625s > x[50] <- NA_integer_ 625s > nx <- length(x) 625s > y <- double(nx) 625s > y[1:25] <- 5 625s > y[51:75] <- -5 625s > y[82:92] <- NA_real_ 625s > y <- y + rnorm(nx) 625s > 625s > # Bins 625s > bx <- c(0.5, 25.5, 75.5, 82.5, 100.5) 625s > 625s > y_smooth0 <- binMeans0(y, x = x, bx = bx) 625s > y_smooth <- binMeans(y, x = x, bx = bx) 625s > # Sanity check 625s > stopifnot(all.equal(y_smooth, y_smooth0)) 625s > 625s > 625s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 625s > # Exception handling 625s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 625s > # Zero bin bounderies (invalid bin definition) 625s > bx <- double(0L) 625s > res <- try(y_smooth <- binMeans(x = 1:5, y = 1:5, bx = bx), silent = TRUE) 625s > stopifnot(inherits(res, "try-error")) 625s > 625s > # One bin boundery (invalid bin definition) 625s > bx <- double(1L) 625s > res <- try(y_smooth <- binMeans(x = 1:5, y = 1:5, bx = bx), silent = TRUE) 625s > stopifnot(inherits(res, "try-error")) 625s > 625s 625s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 625s Copyright (C) 2024 The R Foundation for Statistical Computing 625s Platform: arm-unknown-linux-gnueabihf (32-bit) 625s 625s R is free software and comes with ABSOLUTELY NO WARRANTY. 625s You are welcome to redistribute it under certain conditions. 625s Type 'license()' or 'licence()' for distribution details. 625s 625s R is a collaborative project with many contributors. 625s Type 'contributors()' for more information and 625s 'citation()' on how to cite R or R packages in publications. 625s 625s Type 'demo()' for some demos, 'help()' for on-line help, or 625s 'help.start()' for an HTML browser interface to help. 625s Type 'q()' to quit R. 625s 626s > library("matrixStats") 626s > 626s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 626s > # Naive R implementation of binMeans() 626s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 626s > binMeans0 <- function(y, x, bx, na.rm = TRUE, count = TRUE, right = FALSE) { 626s + n_smooth <- length(bx) - 1L 626s + res <- double(n_smooth) 626s + counts <- rep(NaN, times = n_smooth) 626s + 626s + if (na.rm) { 626s + keep <- !is.na(x) & !is.na(y) 626s + x <- x[keep] 626s + y <- y[keep] 626s + } 626s + 626s + # For each bin... 626s + for (kk in seq_len(n_smooth)) { 626s + if (right) { 626s + idxs <- which(bx[kk] < x & x <= bx[kk + 1L]) 626s + } else { 626s + idxs <- which(bx[kk] <= x & x < bx[kk + 1L]) 626s + } 626s + y_kk <- y[idxs] 626s + res[kk] <- mean(y_kk) 626s + counts[kk] <- length(idxs) 626s + } # for (kk ...) 626s + 626s + if (count) attr(res, "count") <- counts 626s + res 626s + } 626s > 626s > 626s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 626s > # Subsetted tests 626s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 626s > source("utils/validateIndicesFramework.R") 626s > y <- runif(6, min = -6, max = 6) 626s > x <- runif(6, min = -6, max = 6) 626s > storage.mode(x) <- "integer" 626s > bx <- c(-6, 0, 3, 4, 10) 626s > for (idxs in index_cases) { 626s + for (na.rm in c(TRUE, FALSE)) { 626s + validateIndicesTestVector_w(y, x, idxs, 626s + ftest = binMeans, fsure = binMeans0, 626s + bx = bx, na.rm = na.rm, 626s + count = TRUE, right = FALSE) 626s + validateIndicesTestVector_w(y, x, idxs, 626s + ftest = binMeans, fsure = binMeans0, 626s + bx = bx, na.rm = na.rm, 626s + count = TRUE, right = TRUE) 626s + } 626s + } 626s > 626s 626s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 626s Copyright (C) 2024 The R Foundation for Statistical Computing 626s Platform: arm-unknown-linux-gnueabihf (32-bit) 626s 626s R is free software and comes with ABSOLUTELY NO WARRANTY. 626s You are welcome to redistribute it under certain conditions. 626s Type 'license()' or 'licence()' for distribution details. 626s 626s R is a collaborative project with many contributors. 626s Type 'contributors()' for more information and 626s 'citation()' on how to cite R or R packages in publications. 626s 626s Type 'demo()' for some demos, 'help()' for on-line help, or 626s 'help.start()' for an HTML browser interface to help. 626s Type 'q()' to quit R. 626s 626s > library("matrixStats") 626s > 626s > count_R <- function(x, value = TRUE, na.rm = FALSE, ...) { 626s + if (is.na(value)) { 626s + counts <- sum(is.na(x)) 626s + } else { 626s + counts <- sum(x == value, na.rm = na.rm) 626s + } 626s + as.integer(counts) 626s + } 626s > 626s > 626s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 626s > # Data type: integer and numeric 626s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 626s > for (mode in c("integer", "double")) { 626s + x <- runif(20 * 5, min = -3, max = 3) 626s + x[sample.int(length(x), size = 7)] <- 0 626s + storage.mode(x) <- mode 626s + 626s + for (na.rm in c(FALSE, TRUE)) { 626s + # Count zeros 626s + n0 <- count_R(x, value = 0, na.rm = na.rm) 626s + n1 <- count(x, value = 0, na.rm = na.rm) 626s + stopifnot(identical(n1, n0)) 626s + all <- allValue(x, value = 0, na.rm = na.rm) 626s + any <- anyValue(x, value = 0, na.rm = na.rm) 626s + 626s + # Count NAs 626s + n0 <- count_R(x, value = NA, na.rm = na.rm) 626s + n1 <- count(x, value = NA, na.rm = na.rm) 626s + stopifnot(identical(n1, n0)) 626s + all <- allValue(x, value = NA, na.rm = na.rm) 626s + any <- anyValue(x, value = NA, na.rm = na.rm) 626s + 626s + if (mode == "integer") { 626s + ux <- unique(as.vector(x)) 626s + n0 <- n1 <- integer(length(x)) 626s + for (value in ux) { 626s + n0 <- n0 + count_R(x, value = value, na.rm = na.rm) 626s + n1 <- n1 + count(x, value = value, na.rm = na.rm) 626s + stopifnot(identical(n1, n0)) 626s + } 626s + stopifnot(all(n0 == ncol(x))) 626s + } # if (mode == "integer") 626s + 626s + } # for (na.rm ...) 626s + } # for (mode ...) 626s > 626s > # All NAs 626s > na_list <- list(NA_integer_, NA_real_, NaN) 626s > for (na_value in na_list) { 626s + x <- rep(na_value, times = 10L) 626s + for (na.rm in c(FALSE, TRUE)) { 626s + n0 <- count_R(x, na.rm = na.rm) 626s + n1 <- count(x, na.rm = na.rm) 626s + stopifnot(identical(n1, n0)) 626s + 626s + # Count NAs 626s + n0 <- count_R(x, value = NA, na.rm = na.rm) 626s + n1 <- count(x, value = NA, na.rm = na.rm) 626s + stopifnot(identical(n1, n0)) 626s + any <- anyValue(x, value = NA, na.rm = na.rm) 626s + all <- allValue(x, value = NA, na.rm = na.rm) 626s + stopifnot(any) 626s + stopifnot(all) 626s + } 626s + } # for (na_value ...) 626s > 626s > 626s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 626s > # Data type: logical 626s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 626s > x <- logical(length = 10L) 626s > x[3:7] <- TRUE 626s > 626s > # Row/column counts 626s > for (na.rm in c(FALSE, TRUE)) { 626s + n0 <- count_R(x, na.rm = na.rm) 626s + n1 <- count(x, na.rm = na.rm) 626s + stopifnot(identical(n1, n0)) 626s + 626s + n_true <- count(x, value = TRUE, na.rm = na.rm) 626s + n_false <- count(x, value = FALSE, na.rm = na.rm) 626s + stopifnot(n_true + n_false == ncol(x)) 626s + 626s + # Count NAs 626s + n0 <- count_R(x, value = NA, na.rm = na.rm) 626s + n1 <- count(x, value = NA, na.rm = na.rm) 626s + stopifnot(identical(n1, n0)) 626s + } 626s > 627s 627s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 627s Copyright (C) 2024 The R Foundation for Statistical Computing 627s Platform: arm-unknown-linux-gnueabihf (32-bit) 627s 627s R is free software and comes with ABSOLUTELY NO WARRANTY. 627s You are welcome to redistribute it under certain conditions. 627s Type 'license()' or 'licence()' for distribution details. 627s 627s R is a collaborative project with many contributors. 627s Type 'contributors()' for more information and 627s 'citation()' on how to cite R or R packages in publications. 627s 627s Type 'demo()' for some demos, 'help()' for on-line help, or 627s 'help.start()' for an HTML browser interface to help. 627s Type 'q()' to quit R. 627s 627s > library("matrixStats") 627s > 627s > count_R <- function(x, value = TRUE, na.rm = FALSE, ...) { 627s + if (is.na(value)) { 627s + counts <- sum(is.na(x)) 627s + } else { 627s + counts <- sum(x == value, na.rm = na.rm) 627s + } 627s + as.integer(counts) 627s + } 627s > 627s > 627s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 627s > # Subsetted tests 627s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 627s > source("utils/validateIndicesFramework.R") 627s > x <- runif(6, min = -3, max = 3) 627s > storage.mode(x) <- "integer" 627s > for (idxs in index_cases) { 627s + validateIndicesTestVector(x, idxs, 627s + ftest = count, fsure = count_R, 627s + value = 0, na.rm = TRUE) 627s + validateIndicesTestVector(x, idxs, 627s + ftest = count, fsure = count_R, 627s + value = 0, na.rm = FALSE) 627s + validateIndicesTestVector(x, idxs, 627s + ftest = count, fsure = count_R, 627s + value = NA_integer_) 627s + } 627s > 627s 627s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 627s Copyright (C) 2024 The R Foundation for Statistical Computing 627s Platform: arm-unknown-linux-gnueabihf (32-bit) 627s 627s R is free software and comes with ABSOLUTELY NO WARRANTY. 627s You are welcome to redistribute it under certain conditions. 627s Type 'license()' or 'licence()' for distribution details. 627s 627s R is a collaborative project with many contributors. 627s Type 'contributors()' for more information and 627s 'citation()' on how to cite R or R packages in publications. 627s 627s Type 'demo()' for some demos, 'help()' for on-line help, or 627s 'help.start()' for an HTML browser interface to help. 627s Type 'q()' to quit R. 627s 627s > library("matrixStats") 627s > 627s > diff2_R <- function(..., useNames = NA){ 627s + res <- diff(...) 627s + if (is.na(useNames) || !useNames) names(res) <- NULL 627s + res 627s + } 627s > 627s > set.seed(0x42) 627s > 627s > for (mode in c("integer", "double")) { 627s + x <- rnorm(10, sd = 5) 627s + storage.mode(x) <- mode 627s + str(x) 627s + 627s + for (has_na in c(FALSE, TRUE)) { 627s + for (setNames in c(TRUE, FALSE)) { 627s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 627s + if (has_na) { 627s + x[sample(1:10, size = 3)] <- NA 627s + } 627s + if (setNames) { 627s + names(x) <- LETTERS[1:10] 627s + } 627s + for (l in 1:3) { 627s + for (d in 1:4) { 627s + cat(sprintf("%s: NAs = %s, lag = %d, differences = %d, setNames = %d, useNames = %d\n", 627s + mode, has_na, l, d, setNames, useNames)) 627s + y0 <- diff2_R(x, lag = l, differences = d, useNames = useNames) 627s + str(y0) 627s + y1 <- diff2(x, lag = l, differences = d, useNames = useNames) 627s + str(y1) 627s + stopifnot(identical(y1, y0)) 627s + } 627s + } 627s + } 627s + } 627s + } # for (has_na ...) 627s + } 627s int [1:10] 11 1 2 0 -1 -3 -3 6 0 0 627s integer: NAs = FALSE, lag = 1, differences = 1, setNames = 1, useNames = 1 627s Named int [1:9] -10 1 -2 -1 -2 0 9 -6 0 627s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 627s Named int [1:9] -10 1 -2 -1 -2 0 9 -6 0 627s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 627s integer: NAs = FALSE, lag = 1, differences = 2, setNames = 1, useNames = 1 627s Named int [1:8] 11 -3 1 -1 2 9 -15 6 627s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 627s Named int [1:8] 11 -3 1 -1 2 9 -15 6 627s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 627s integer: NAs = FALSE, lag = 1, differences = 3, setNames = 1, useNames = 1 627s Named int [1:7] -14 4 -2 3 7 -24 21 627s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 627s Named int [1:7] -14 4 -2 3 7 -24 21 627s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 627s integer: NAs = FALSE, lag = 1, differences = 4, setNames = 1, useNames = 1 627s Named int [1:6] 18 -6 5 4 -31 45 627s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 627s Named int [1:6] 18 -6 5 4 -31 45 627s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 627s integer: NAs = FALSE, lag = 2, differences = 1, setNames = 1, useNames = 1 627s Named int [1:8] -9 -1 -3 -3 -2 9 3 -6 627s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 627s Named int [1:8] -9 -1 -3 -3 -2 9 3 -6 627s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 627s integer: NAs = FALSE, lag = 2, differences = 2, setNames = 1, useNames = 1 627s Named int [1:6] 6 -2 1 12 5 -15 627s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 627s Named int [1:6] 6 -2 1 12 5 -15 627s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 627s integer: NAs = FALSE, lag = 2, differences = 3, setNames = 1, useNames = 1 627s Named int [1:4] -5 14 4 -27 627s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 627s Named int [1:4] -5 14 4 -27 627s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 627s integer: NAs = FALSE, lag = 2, differences = 4, setNames = 1, useNames = 1 627s Named int [1:2] 9 -41 627s - attr(*, "names")= chr [1:2] "I" "J" 628s Named int [1:2] 9 -41 628s - attr(*, "names")= chr [1:2] "I" "J" 628s integer: NAs = FALSE, lag = 3, differences = 1, setNames = 1, useNames = 1 628s Named int [1:7] -11 -2 -5 -3 7 3 3 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s Named int [1:7] -11 -2 -5 -3 7 3 3 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s integer: NAs = FALSE, lag = 3, differences = 2, setNames = 1, useNames = 1 628s Named int [1:4] 8 9 8 6 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s Named int [1:4] 8 9 8 6 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s integer: NAs = FALSE, lag = 3, differences = 3, setNames = 1, useNames = 1 628s Named int -2 628s - attr(*, "names")= chr "J" 628s Named int -2 628s - attr(*, "names")= chr "J" 628s integer: NAs = FALSE, lag = 3, differences = 4, setNames = 1, useNames = 1 628s Named int(0) 628s - attr(*, "names")= chr(0) 628s Named int(0) 628s - attr(*, "names")= chr(0) 628s integer: NAs = FALSE, lag = 1, differences = 1, setNames = 1, useNames = 0 628s int [1:9] -10 1 -2 -1 -2 0 9 -6 0 628s int [1:9] -10 1 -2 -1 -2 0 9 -6 0 628s integer: NAs = FALSE, lag = 1, differences = 2, setNames = 1, useNames = 0 628s int [1:8] 11 -3 1 -1 2 9 -15 6 628s int [1:8] 11 -3 1 -1 2 9 -15 6 628s integer: NAs = FALSE, lag = 1, differences = 3, setNames = 1, useNames = 0 628s int [1:7] -14 4 -2 3 7 -24 21 628s int [1:7] -14 4 -2 3 7 -24 21 628s integer: NAs = FALSE, lag = 1, differences = 4, setNames = 1, useNames = 0 628s int [1:6] 18 -6 5 4 -31 45 628s int [1:6] 18 -6 5 4 -31 45 628s integer: NAs = FALSE, lag = 2, differences = 1, setNames = 1, useNames = 0 628s int [1:8] -9 -1 -3 -3 -2 9 3 -6 628s int [1:8] -9 -1 -3 -3 -2 9 3 -6 628s integer: NAs = FALSE, lag = 2, differences = 2, setNames = 1, useNames = 0 628s int [1:6] 6 -2 1 12 5 -15 628s int [1:6] 6 -2 1 12 5 -15 628s integer: NAs = FALSE, lag = 2, differences = 3, setNames = 1, useNames = 0 628s int [1:4] -5 14 4 -27 628s int [1:4] -5 14 4 -27 628s integer: NAs = FALSE, lag = 2, differences = 4, setNames = 1, useNames = 0 628s int [1:2] 9 -41 628s int [1:2] 9 -41 628s integer: NAs = FALSE, lag = 3, differences = 1, setNames = 1, useNames = 0 628s int [1:7] -11 -2 -5 -3 7 3 3 628s int [1:7] -11 -2 -5 -3 7 3 3 628s integer: NAs = FALSE, lag = 3, differences = 2, setNames = 1, useNames = 0 628s int [1:4] 8 9 8 6 628s int [1:4] 8 9 8 6 628s integer: NAs = FALSE, lag = 3, differences = 3, setNames = 1, useNames = 0 628s int -2 628s int -2 628s integer: NAs = FALSE, lag = 3, differences = 4, setNames = 1, useNames = 0 628s int(0) 628s int(0) 628s integer: NAs = FALSE, lag = 1, differences = 1, setNames = 0, useNames = 1 628s Named int [1:9] -10 1 -2 -1 -2 0 9 -6 0 628s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 628s Named int [1:9] -10 1 -2 -1 -2 0 9 -6 0 628s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 628s integer: NAs = FALSE, lag = 1, differences = 2, setNames = 0, useNames = 1 628s Named int [1:8] 11 -3 1 -1 2 9 -15 6 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s Named int [1:8] 11 -3 1 -1 2 9 -15 6 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s integer: NAs = FALSE, lag = 1, differences = 3, setNames = 0, useNames = 1 628s Named int [1:7] -14 4 -2 3 7 -24 21 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s Named int [1:7] -14 4 -2 3 7 -24 21 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s integer: NAs = FALSE, lag = 1, differences = 4, setNames = 0, useNames = 1 628s Named int [1:6] 18 -6 5 4 -31 45 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s Named int [1:6] 18 -6 5 4 -31 45 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s integer: NAs = FALSE, lag = 2, differences = 1, setNames = 0, useNames = 1 628s Named int [1:8] -9 -1 -3 -3 -2 9 3 -6 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s Named int [1:8] -9 -1 -3 -3 -2 9 3 -6 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s integer: NAs = FALSE, lag = 2, differences = 2, setNames = 0, useNames = 1 628s Named int [1:6] 6 -2 1 12 5 -15 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s Named int [1:6] 6 -2 1 12 5 -15 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s integer: NAs = FALSE, lag = 2, differences = 3, setNames = 0, useNames = 1 628s Named int [1:4] -5 14 4 -27 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s Named int [1:4] -5 14 4 -27 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s integer: NAs = FALSE, lag = 2, differences = 4, setNames = 0, useNames = 1 628s Named int [1:2] 9 -41 628s - attr(*, "names")= chr [1:2] "I" "J" 628s Named int [1:2] 9 -41 628s - attr(*, "names")= chr [1:2] "I" "J" 628s integer: NAs = FALSE, lag = 3, differences = 1, setNames = 0, useNames = 1 628s Named int [1:7] -11 -2 -5 -3 7 3 3 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s Named int [1:7] -11 -2 -5 -3 7 3 3 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s integer: NAs = FALSE, lag = 3, differences = 2, setNames = 0, useNames = 1 628s Named int [1:4] 8 9 8 6 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s Named int [1:4] 8 9 8 6 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s integer: NAs = FALSE, lag = 3, differences = 3, setNames = 0, useNames = 1 628s Named int -2 628s - attr(*, "names")= chr "J" 628s Named int -2 628s - attr(*, "names")= chr "J" 628s integer: NAs = FALSE, lag = 3, differences = 4, setNames = 0, useNames = 1 628s Named int(0) 628s - attr(*, "names")= chr(0) 628s Named int(0) 628s - attr(*, "names")= chr(0) 628s integer: NAs = FALSE, lag = 1, differences = 1, setNames = 0, useNames = 0 628s int [1:9] -10 1 -2 -1 -2 0 9 -6 0 628s int [1:9] -10 1 -2 -1 -2 0 9 -6 0 628s integer: NAs = FALSE, lag = 1, differences = 2, setNames = 0, useNames = 0 628s int [1:8] 11 -3 1 -1 2 9 -15 6 628s int [1:8] 11 -3 1 -1 2 9 -15 6 628s integer: NAs = FALSE, lag = 1, differences = 3, setNames = 0, useNames = 0 628s int [1:7] -14 4 -2 3 7 -24 21 628s int [1:7] -14 4 -2 3 7 -24 21 628s integer: NAs = FALSE, lag = 1, differences = 4, setNames = 0, useNames = 0 628s int [1:6] 18 -6 5 4 -31 45 628s int [1:6] 18 -6 5 4 -31 45 628s integer: NAs = FALSE, lag = 2, differences = 1, setNames = 0, useNames = 0 628s int [1:8] -9 -1 -3 -3 -2 9 3 -6 628s int [1:8] -9 -1 -3 -3 -2 9 3 -6 628s integer: NAs = FALSE, lag = 2, differences = 2, setNames = 0, useNames = 0 628s int [1:6] 6 -2 1 12 5 -15 628s int [1:6] 6 -2 1 12 5 -15 628s integer: NAs = FALSE, lag = 2, differences = 3, setNames = 0, useNames = 0 628s int [1:4] -5 14 4 -27 628s int [1:4] -5 14 4 -27 628s integer: NAs = FALSE, lag = 2, differences = 4, setNames = 0, useNames = 0 628s int [1:2] 9 -41 628s int [1:2] 9 -41 628s integer: NAs = FALSE, lag = 3, differences = 1, setNames = 0, useNames = 0 628s int [1:7] -11 -2 -5 -3 7 3 3 628s int [1:7] -11 -2 -5 -3 7 3 3 628s integer: NAs = FALSE, lag = 3, differences = 2, setNames = 0, useNames = 0 628s int [1:4] 8 9 8 6 628s int [1:4] 8 9 8 6 628s integer: NAs = FALSE, lag = 3, differences = 3, setNames = 0, useNames = 0 628s int -2 628s int -2 628s integer: NAs = FALSE, lag = 3, differences = 4, setNames = 0, useNames = 0 628s int(0) 628s int(0) 628s integer: NAs = TRUE, lag = 1, differences = 1, setNames = 1, useNames = 1 628s Named int [1:9] NA NA NA NA NA 0 9 -6 0 628s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 628s Named int [1:9] NA NA NA NA NA 0 9 -6 0 628s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 628s integer: NAs = TRUE, lag = 1, differences = 2, setNames = 1, useNames = 1 628s Named int [1:8] NA NA NA NA NA 9 -15 6 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s Named int [1:8] NA NA NA NA NA 9 -15 6 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s integer: NAs = TRUE, lag = 1, differences = 3, setNames = 1, useNames = 1 628s Named int [1:7] NA NA NA NA NA -24 21 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s Named int [1:7] NA NA NA NA NA -24 21 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s integer: NAs = TRUE, lag = 1, differences = 4, setNames = 1, useNames = 1 628s Named int [1:6] NA NA NA NA NA 45 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s Named int [1:6] NA NA NA NA NA 45 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s integer: NAs = TRUE, lag = 2, differences = 1, setNames = 1, useNames = 1 628s Named int [1:8] -9 NA NA NA NA 9 3 -6 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s Named int [1:8] -9 NA NA NA NA 9 3 -6 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s integer: NAs = TRUE, lag = 2, differences = 2, setNames = 1, useNames = 1 628s Named int [1:6] NA NA NA NA NA -15 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s Named int [1:6] NA NA NA NA NA -15 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s integer: NAs = TRUE, lag = 2, differences = 3, setNames = 1, useNames = 1 628s Named int [1:4] NA NA NA NA 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s Named int [1:4] NA NA NA NA 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s integer: NAs = TRUE, lag = 2, differences = 4, setNames = 1, useNames = 1 628s Named int [1:2] NA NA 628s - attr(*, "names")= chr [1:2] "I" "J" 628s Named int [1:2] NA NA 628s - attr(*, "names")= chr [1:2] "I" "J" 628s integer: NAs = TRUE, lag = 3, differences = 1, setNames = 1, useNames = 1 628s Named int [1:7] NA NA -5 NA NA 3 3 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s Named int [1:7] NA NA -5 NA NA 3 3 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s integer: NAs = TRUE, lag = 3, differences = 2, setNames = 1, useNames = 1 628s Named int [1:4] NA NA 8 NA 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s Named int [1:4] NA NA 8 NA 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s integer: NAs = TRUE, lag = 3, differences = 3, setNames = 1, useNames = 1 628s Named int NA 628s - attr(*, "names")= chr "J" 628s Named int NA 628s - attr(*, "names")= chr "J" 628s integer: NAs = TRUE, lag = 3, differences = 4, setNames = 1, useNames = 1 628s Named int(0) 628s - attr(*, "names")= chr(0) 628s Named int(0) 628s - attr(*, "names")= chr(0) 628s integer: NAs = TRUE, lag = 1, differences = 1, setNames = 1, useNames = 0 628s int [1:9] NA NA NA NA NA 0 9 NA NA 628s int [1:9] NA NA NA NA NA 0 9 NA NA 628s integer: NAs = TRUE, lag = 1, differences = 2, setNames = 1, useNames = 0 628s int [1:8] NA NA NA NA NA 9 NA NA 628s int [1:8] NA NA NA NA NA 9 NA NA 628s integer: NAs = TRUE, lag = 1, differences = 3, setNames = 1, useNames = 0 628s int [1:7] NA NA NA NA NA NA NA 628s int [1:7] NA NA NA NA NA NA NA 628s integer: NAs = TRUE, lag = 1, differences = 4, setNames = 1, useNames = 0 628s int [1:6] NA NA NA NA NA NA 628s int [1:6] NA NA NA NA NA NA 628s integer: NAs = TRUE, lag = 2, differences = 1, setNames = 1, useNames = 0 628s int [1:8] NA NA NA NA NA 9 NA -6 628s int [1:8] NA NA NA NA NA 9 NA -6 628s integer: NAs = TRUE, lag = 2, differences = 2, setNames = 1, useNames = 0 628s int [1:6] NA NA NA NA NA -15 628s int [1:6] NA NA NA NA NA -15 628s integer: NAs = TRUE, lag = 2, differences = 3, setNames = 1, useNames = 0 628s int [1:4] NA NA NA NA 628s int [1:4] NA NA NA NA 628s integer: NAs = TRUE, lag = 2, differences = 4, setNames = 1, useNames = 0 628s int [1:2] NA NA 628s int [1:2] NA NA 628s integer: NAs = TRUE, lag = 3, differences = 1, setNames = 1, useNames = 0 628s int [1:7] NA NA NA NA NA NA 3 628s int [1:7] NA NA NA NA NA NA 3 628s integer: NAs = TRUE, lag = 3, differences = 2, setNames = 1, useNames = 0 628s int [1:4] NA NA NA NA 628s int [1:4] NA NA NA NA 628s integer: NAs = TRUE, lag = 3, differences = 3, setNames = 1, useNames = 0 628s int NA 628s int NA 628s integer: NAs = TRUE, lag = 3, differences = 4, setNames = 1, useNames = 0 628s int(0) 628s int(0) 628s integer: NAs = TRUE, lag = 1, differences = 1, setNames = 0, useNames = 1 628s Named int [1:9] NA NA NA NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 628s Named int [1:9] NA NA NA NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 628s integer: NAs = TRUE, lag = 1, differences = 2, setNames = 0, useNames = 1 628s Named int [1:8] NA NA NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s Named int [1:8] NA NA NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s integer: NAs = TRUE, lag = 1, differences = 3, setNames = 0, useNames = 1 628s Named int [1:7] NA NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s Named int [1:7] NA NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s integer: NAs = TRUE, lag = 1, differences = 4, setNames = 0, useNames = 1 628s Named int [1:6] NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s Named int [1:6] NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s integer: NAs = TRUE, lag = 2, differences = 1, setNames = 0, useNames = 1 628s Named int [1:8] NA NA NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s Named int [1:8] NA NA NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s integer: NAs = TRUE, lag = 2, differences = 2, setNames = 0, useNames = 1 628s Named int [1:6] NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s Named int [1:6] NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s integer: NAs = TRUE, lag = 2, differences = 3, setNames = 0, useNames = 1 628s Named int [1:4] NA NA NA NA 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s Named int [1:4] NA NA NA NA 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s integer: NAs = TRUE, lag = 2, differences = 4, setNames = 0, useNames = 1 628s Named int [1:2] NA NA 628s - attr(*, "names")= chr [1:2] "I" "J" 628s Named int [1:2] NA NA 628s - attr(*, "names")= chr [1:2] "I" "J" 628s integer: NAs = TRUE, lag = 3, differences = 1, setNames = 0, useNames = 1 628s Named int [1:7] NA NA NA NA NA NA 3 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s Named int [1:7] NA NA NA NA NA NA 3 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s integer: NAs = TRUE, lag = 3, differences = 2, setNames = 0, useNames = 1 628s Named int [1:4] NA NA NA NA 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s Named int [1:4] NA NA NA NA 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s integer: NAs = TRUE, lag = 3, differences = 3, setNames = 0, useNames = 1 628s Named int NA 628s - attr(*, "names")= chr "J" 628s Named int NA 628s - attr(*, "names")= chr "J" 628s integer: NAs = TRUE, lag = 3, differences = 4, setNames = 0, useNames = 1 628s Named int(0) 628s - attr(*, "names")= chr(0) 628s Named int(0) 628s - attr(*, "names")= chr(0) 628s integer: NAs = TRUE, lag = 1, differences = 1, setNames = 0, useNames = 0 628s int [1:9] NA NA NA NA NA NA NA NA NA 628s int [1:9] NA NA NA NA NA NA NA NA NA 628s integer: NAs = TRUE, lag = 1, differences = 2, setNames = 0, useNames = 0 628s int [1:8] NA NA NA NA NA NA NA NA 628s int [1:8] NA NA NA NA NA NA NA NA 628s integer: NAs = TRUE, lag = 1, differences = 3, setNames = 0, useNames = 0 628s int [1:7] NA NA NA NA NA NA NA 628s int [1:7] NA NA NA NA NA NA NA 628s integer: NAs = TRUE, lag = 1, differences = 4, setNames = 0, useNames = 0 628s int [1:6] NA NA NA NA NA NA 628s int [1:6] NA NA NA NA NA NA 628s integer: NAs = TRUE, lag = 2, differences = 1, setNames = 0, useNames = 0 628s int [1:8] NA NA NA NA NA NA NA NA 628s int [1:8] NA NA NA NA NA NA NA NA 628s integer: NAs = TRUE, lag = 2, differences = 2, setNames = 0, useNames = 0 628s int [1:6] NA NA NA NA NA NA 628s int [1:6] NA NA NA NA NA NA 628s integer: NAs = TRUE, lag = 2, differences = 3, setNames = 0, useNames = 0 628s int [1:4] NA NA NA NA 628s int [1:4] NA NA NA NA 628s integer: NAs = TRUE, lag = 2, differences = 4, setNames = 0, useNames = 0 628s int [1:2] NA NA 628s int [1:2] NA NA 628s integer: NAs = TRUE, lag = 3, differences = 1, setNames = 0, useNames = 0 628s int [1:7] NA NA NA NA NA NA 3 628s int [1:7] NA NA NA NA NA NA 3 628s integer: NAs = TRUE, lag = 3, differences = 2, setNames = 0, useNames = 0 628s int [1:4] NA NA NA NA 628s int [1:4] NA NA NA NA 628s integer: NAs = TRUE, lag = 3, differences = 3, setNames = 0, useNames = 0 628s int NA 628s int NA 628s integer: NAs = TRUE, lag = 3, differences = 4, setNames = 0, useNames = 0 628s int(0) 628s int(0) 628s num [1:10] 2.586 -0.344 0.33 9.155 -3.254 ... 628s double: NAs = FALSE, lag = 1, differences = 1, setNames = 1, useNames = 1 628s Named num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 628s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 628s Named num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 628s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 628s double: NAs = FALSE, lag = 1, differences = 2, setNames = 1, useNames = 1 628s Named num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s Named num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s double: NAs = FALSE, lag = 1, differences = 3, setNames = 1, useNames = 1 628s Named num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s Named num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s double: NAs = FALSE, lag = 1, differences = 4, setNames = 1, useNames = 1 628s Named num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s Named num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s double: NAs = FALSE, lag = 2, differences = 1, setNames = 1, useNames = 1 628s Named num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s Named num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s double: NAs = FALSE, lag = 2, differences = 2, setNames = 1, useNames = 1 628s Named num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s Named num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s double: NAs = FALSE, lag = 2, differences = 3, setNames = 1, useNames = 1 628s Named num [1:4] 0.368 42.988 15.396 -29.313 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s Named num [1:4] 0.368 42.988 15.396 -29.313 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s double: NAs = FALSE, lag = 2, differences = 4, setNames = 1, useNames = 1 628s Named num [1:2] 15 -72.3 628s - attr(*, "names")= chr [1:2] "I" "J" 628s Named num [1:2] 15 -72.3 628s - attr(*, "names")= chr [1:2] "I" "J" 628s double: NAs = FALSE, lag = 3, differences = 1, setNames = 1, useNames = 1 628s Named num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s Named num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s double: NAs = FALSE, lag = 3, differences = 2, setNames = 1, useNames = 1 628s Named num [1:4] -23.52 7.92 11.38 23.27 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s Named num [1:4] -23.52 7.92 11.38 23.27 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s double: NAs = FALSE, lag = 3, differences = 3, setNames = 1, useNames = 1 628s Named num 46.8 628s - attr(*, "names")= chr "J" 628s Named num 46.8 628s - attr(*, "names")= chr "J" 628s double: NAs = FALSE, lag = 3, differences = 4, setNames = 1, useNames = 1 628s Named num(0) 628s - attr(*, "names")= chr(0) 628s Named num(0) 628s - attr(*, "names")= chr(0) 628s double: NAs = FALSE, lag = 1, differences = 1, setNames = 1, useNames = 0 628s num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 628s num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 628s double: NAs = FALSE, lag = 1, differences = 2, setNames = 1, useNames = 0 628s num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 628s num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 628s double: NAs = FALSE, lag = 1, differences = 3, setNames = 1, useNames = 0 628s num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 628s num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 628s double: NAs = FALSE, lag = 1, differences = 4, setNames = 1, useNames = 0 628s num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 628s num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 628s double: NAs = FALSE, lag = 2, differences = 1, setNames = 1, useNames = 0 628s num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 628s num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 628s double: NAs = FALSE, lag = 2, differences = 2, setNames = 1, useNames = 0 628s num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 628s num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 628s double: NAs = FALSE, lag = 2, differences = 3, setNames = 1, useNames = 0 628s num [1:4] 0.368 42.988 15.396 -29.313 628s num [1:4] 0.368 42.988 15.396 -29.313 628s double: NAs = FALSE, lag = 2, differences = 4, setNames = 1, useNames = 0 628s num [1:2] 15 -72.3 628s num [1:2] 15 -72.3 628s double: NAs = FALSE, lag = 3, differences = 1, setNames = 1, useNames = 0 628s num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 628s num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 628s double: NAs = FALSE, lag = 3, differences = 2, setNames = 1, useNames = 0 628s num [1:4] -23.52 7.92 11.38 23.27 628s num [1:4] -23.52 7.92 11.38 23.27 628s double: NAs = FALSE, lag = 3, differences = 3, setNames = 1, useNames = 0 628s num 46.8 628s num 46.8 628s double: NAs = FALSE, lag = 3, differences = 4, setNames = 1, useNames = 0 628s num(0) 628s num(0) 628s double: NAs = FALSE, lag = 1, differences = 1, setNames = 0, useNames = 1 628s Named num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 628s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 628s Named num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 628s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 628s double: NAs = FALSE, lag = 1, differences = 2, setNames = 0, useNames = 1 628s Named num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s Named num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s double: NAs = FALSE, lag = 1, differences = 3, setNames = 0, useNames = 1 628s Named num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s Named num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s double: NAs = FALSE, lag = 1, differences = 4, setNames = 0, useNames = 1 628s Named num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s Named num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s double: NAs = FALSE, lag = 2, differences = 1, setNames = 0, useNames = 1 628s Named num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s Named num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s double: NAs = FALSE, lag = 2, differences = 2, setNames = 0, useNames = 1 628s Named num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s Named num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s double: NAs = FALSE, lag = 2, differences = 3, setNames = 0, useNames = 1 628s Named num [1:4] 0.368 42.988 15.396 -29.313 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s Named num [1:4] 0.368 42.988 15.396 -29.313 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s double: NAs = FALSE, lag = 2, differences = 4, setNames = 0, useNames = 1 628s Named num [1:2] 15 -72.3 628s - attr(*, "names")= chr [1:2] "I" "J" 628s Named num [1:2] 15 -72.3 628s - attr(*, "names")= chr [1:2] "I" "J" 628s double: NAs = FALSE, lag = 3, differences = 1, setNames = 0, useNames = 1 628s Named num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s Named num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s double: NAs = FALSE, lag = 3, differences = 2, setNames = 0, useNames = 1 628s Named num [1:4] -23.52 7.92 11.38 23.27 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s Named num [1:4] -23.52 7.92 11.38 23.27 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s double: NAs = FALSE, lag = 3, differences = 3, setNames = 0, useNames = 1 628s Named num 46.8 628s - attr(*, "names")= chr "J" 628s Named num 46.8 628s - attr(*, "names")= chr "J" 628s double: NAs = FALSE, lag = 3, differences = 4, setNames = 0, useNames = 1 628s Named num(0) 628s - attr(*, "names")= chr(0) 628s Named num(0) 628s - attr(*, "names")= chr(0) 628s double: NAs = FALSE, lag = 1, differences = 1, setNames = 0, useNames = 0 628s num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 628s num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 628s double: NAs = FALSE, lag = 1, differences = 2, setNames = 0, useNames = 0 628s num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 628s num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 628s double: NAs = FALSE, lag = 1, differences = 3, setNames = 0, useNames = 0 628s num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 628s num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 628s double: NAs = FALSE, lag = 1, differences = 4, setNames = 0, useNames = 0 628s num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 628s num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 628s double: NAs = FALSE, lag = 2, differences = 1, setNames = 0, useNames = 0 628s num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 628s num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 628s double: NAs = FALSE, lag = 2, differences = 2, setNames = 0, useNames = 0 628s num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 628s num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 628s double: NAs = FALSE, lag = 2, differences = 3, setNames = 0, useNames = 0 628s num [1:4] 0.368 42.988 15.396 -29.313 628s num [1:4] 0.368 42.988 15.396 -29.313 628s double: NAs = FALSE, lag = 2, differences = 4, setNames = 0, useNames = 0 628s num [1:2] 15 -72.3 628s num [1:2] 15 -72.3 628s double: NAs = FALSE, lag = 3, differences = 1, setNames = 0, useNames = 0 628s num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 628s num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 628s double: NAs = FALSE, lag = 3, differences = 2, setNames = 0, useNames = 0 628s num [1:4] -23.52 7.92 11.38 23.27 628s num [1:4] -23.52 7.92 11.38 23.27 628s double: NAs = FALSE, lag = 3, differences = 3, setNames = 0, useNames = 0 628s num 46.8 628s num 46.8 628s double: NAs = FALSE, lag = 3, differences = 4, setNames = 0, useNames = 0 628s num(0) 628s num(0) 628s double: NAs = TRUE, lag = 1, differences = 1, setNames = 1, useNames = 1 628s Named num [1:9] -2.929 0.673 8.826 NA NA ... 628s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 628s Named num [1:9] -2.929 0.673 8.826 NA NA ... 628s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 628s double: NAs = TRUE, lag = 1, differences = 2, setNames = 1, useNames = 1 628s Named num [1:8] 3.6 8.15 NA NA NA ... 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s Named num [1:8] 3.6 8.15 NA NA NA ... 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s double: NAs = TRUE, lag = 1, differences = 3, setNames = 1, useNames = 1 628s Named num [1:7] 4.55 NA NA NA NA ... 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s Named num [1:7] 4.55 NA NA NA NA ... 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s double: NAs = TRUE, lag = 1, differences = 4, setNames = 1, useNames = 1 628s Named num [1:6] NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s Named num [1:6] NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s double: NAs = TRUE, lag = 2, differences = 1, setNames = 1, useNames = 1 628s Named num [1:8] -2.26 9.5 NA NA NA ... 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s Named num [1:8] -2.26 9.5 NA NA NA ... 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s double: NAs = TRUE, lag = 2, differences = 2, setNames = 1, useNames = 1 628s Named num [1:6] NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s Named num [1:6] NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s double: NAs = TRUE, lag = 2, differences = 3, setNames = 1, useNames = 1 628s Named num [1:4] NA NA NA NA 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s Named num [1:4] NA NA NA NA 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s double: NAs = TRUE, lag = 2, differences = 4, setNames = 1, useNames = 1 628s Named num [1:2] NA NA 628s - attr(*, "names")= chr [1:2] "I" "J" 628s Named num [1:2] NA NA 628s - attr(*, "names")= chr [1:2] "I" "J" 628s double: NAs = TRUE, lag = 3, differences = 1, setNames = 1, useNames = 1 628s Named num [1:7] 6.57 NA NA -16.95 NA ... 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s Named num [1:7] 6.57 NA NA -16.95 NA ... 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s double: NAs = TRUE, lag = 3, differences = 2, setNames = 1, useNames = 1 628s Named num [1:4] -23.5 NA NA 23.3 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s Named num [1:4] -23.5 NA NA 23.3 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s double: NAs = TRUE, lag = 3, differences = 3, setNames = 1, useNames = 1 628s Named num 46.8 628s - attr(*, "names")= chr "J" 628s Named num 46.8 628s - attr(*, "names")= chr "J" 628s double: NAs = TRUE, lag = 3, differences = 4, setNames = 1, useNames = 1 628s Named num(0) 628s - attr(*, "names")= chr(0) 628s Named num(0) 628s - attr(*, "names")= chr(0) 628s double: NAs = TRUE, lag = 1, differences = 1, setNames = 1, useNames = 0 628s num [1:9] NA 0.673 8.826 NA NA ... 628s num [1:9] NA 0.673 8.826 NA NA ... 628s double: NAs = TRUE, lag = 1, differences = 2, setNames = 1, useNames = 0 628s num [1:8] NA 8.15 NA NA NA ... 628s num [1:8] NA 8.15 NA NA NA ... 628s double: NAs = TRUE, lag = 1, differences = 3, setNames = 1, useNames = 0 628s num [1:7] NA NA NA NA NA NA NA 628s num [1:7] NA NA NA NA NA NA NA 628s double: NAs = TRUE, lag = 1, differences = 4, setNames = 1, useNames = 0 628s num [1:6] NA NA NA NA NA NA 628s num [1:6] NA NA NA NA NA NA 628s double: NAs = TRUE, lag = 2, differences = 1, setNames = 1, useNames = 0 628s num [1:8] NA 9.5 NA NA NA ... 628s num [1:8] NA 9.5 NA NA NA ... 628s double: NAs = TRUE, lag = 2, differences = 2, setNames = 1, useNames = 0 628s num [1:6] NA NA NA NA NA NA 628s num [1:6] NA NA NA NA NA NA 628s double: NAs = TRUE, lag = 2, differences = 3, setNames = 1, useNames = 0 628s num [1:4] NA NA NA NA 628s num [1:4] NA NA NA NA 628s double: NAs = TRUE, lag = 2, differences = 4, setNames = 1, useNames = 0 628s num [1:2] NA NA 628s num [1:2] NA NA 628s double: NAs = TRUE, lag = 3, differences = 1, setNames = 1, useNames = 0 628s num [1:7] NA NA NA NA NA NA NA 628s num [1:7] NA NA NA NA NA NA NA 628s double: NAs = TRUE, lag = 3, differences = 2, setNames = 1, useNames = 0 628s num [1:4] NA NA NA NA 628s num [1:4] NA NA NA NA 628s double: NAs = TRUE, lag = 3, differences = 3, setNames = 1, useNames = 0 628s num NA 628s num NA 628s double: NAs = TRUE, lag = 3, differences = 4, setNames = 1, useNames = 0 628s num(0) 628s num(0) 628s double: NAs = TRUE, lag = 1, differences = 1, setNames = 0, useNames = 1 628s Named num [1:9] NA 0.673 8.826 NA NA ... 628s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 628s Named num [1:9] NA 0.673 8.826 NA NA ... 628s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 628s double: NAs = TRUE, lag = 1, differences = 2, setNames = 0, useNames = 1 628s Named num [1:8] NA 8.15 NA NA NA ... 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s Named num [1:8] NA 8.15 NA NA NA ... 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s double: NAs = TRUE, lag = 1, differences = 3, setNames = 0, useNames = 1 628s Named num [1:7] NA NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s Named num [1:7] NA NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s double: NAs = TRUE, lag = 1, differences = 4, setNames = 0, useNames = 1 628s Named num [1:6] NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s Named num [1:6] NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s double: NAs = TRUE, lag = 2, differences = 1, setNames = 0, useNames = 1 628s Named num [1:8] NA 9.5 NA NA NA ... 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s Named num [1:8] NA 9.5 NA NA NA ... 628s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 628s double: NAs = TRUE, lag = 2, differences = 2, setNames = 0, useNames = 1 628s Named num [1:6] NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s Named num [1:6] NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 628s double: NAs = TRUE, lag = 2, differences = 3, setNames = 0, useNames = 1 628s Named num [1:4] NA NA NA NA 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s Named num [1:4] NA NA NA NA 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s double: NAs = TRUE, lag = 2, differences = 4, setNames = 0, useNames = 1 628s Named num [1:2] NA NA 628s - attr(*, "names")= chr [1:2] "I" "J" 628s Named num [1:2] NA NA 628s - attr(*, "names")= chr [1:2] "I" "J" 628s double: NAs = TRUE, lag = 3, differences = 1, setNames = 0, useNames = 1 628s Named num [1:7] NA NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s Named num [1:7] NA NA NA NA NA NA NA 628s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 628s double: NAs = TRUE, lag = 3, differences = 2, setNames = 0, useNames = 1 628s Named num [1:4] NA NA NA NA 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s Named num [1:4] NA NA NA NA 628s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 628s double: NAs = TRUE, lag = 3, differences = 3, setNames = 0, useNames = 1 628s Named num NA 628s - attr(*, "names")= chr "J" 628s Named num NA 628s - attr(*, "names")= chr "J" 628s double: NAs = TRUE, lag = 3, differences = 4, setNames = 0, useNames = 1 628s Named num(0) 628s - attr(*, "names")= chr(0) 628s Named num(0) 628s - attr(*, "names")= chr(0) 628s double: NAs = TRUE, lag = 1, differences = 1, setNames = 0, useNames = 0 628s num [1:9] NA 0.673 8.826 NA NA ... 628s num [1:9] NA 0.673 8.826 NA NA ... 628s double: NAs = TRUE, lag = 1, differences = 2, setNames = 0, useNames = 0 628s num [1:8] NA 8.15 NA NA NA ... 628s num [1:8] NA 8.15 NA NA NA ... 628s double: NAs = TRUE, lag = 1, differences = 3, setNames = 0, useNames = 0 628s num [1:7] NA NA NA NA NA NA NA 628s num [1:7] NA NA NA NA NA NA NA 628s double: NAs = TRUE, lag = 1, differences = 4, setNames = 0, useNames = 0 628s num [1:6] NA NA NA NA NA NA 628s num [1:6] NA NA NA NA NA NA 628s double: NAs = TRUE, lag = 2, differences = 1, setNames = 0, useNames = 0 628s num [1:8] NA 9.5 NA NA NA ... 628s num [1:8] NA 9.5 NA NA NA ... 628s double: NAs = TRUE, lag = 2, differences = 2, setNames = 0, useNames = 0 628s num [1:6] NA NA NA NA NA NA 628s num [1:6] NA NA NA NA NA NA 628s double: NAs = TRUE, lag = 2, differences = 3, setNames = 0, useNames = 0 628s num [1:4] NA NA NA NA 628s num [1:4] NA NA NA NA 628s double: NAs = TRUE, lag = 2, differences = 4, setNames = 0, useNames = 0 628s num [1:2] NA NA 628s num [1:2] NA NA 628s double: NAs = TRUE, lag = 3, differences = 1, setNames = 0, useNames = 0 628s num [1:7] NA NA NA NA NA NA NA 628s num [1:7] NA NA NA NA NA NA NA 628s double: NAs = TRUE, lag = 3, differences = 2, setNames = 0, useNames = 0 628s num [1:4] NA NA NA NA 628s num [1:4] NA NA NA NA 628s double: NAs = TRUE, lag = 3, differences = 3, setNames = 0, useNames = 0 628s num NA 628s num NA 628s double: NAs = TRUE, lag = 3, differences = 4, setNames = 0, useNames = 0 628s num(0) 628s num(0) 628s > 628s 628s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 628s Copyright (C) 2024 The R Foundation for Statistical Computing 628s Platform: arm-unknown-linux-gnueabihf (32-bit) 628s 628s R is free software and comes with ABSOLUTELY NO WARRANTY. 628s You are welcome to redistribute it under certain conditions. 628s Type 'license()' or 'licence()' for distribution details. 628s 628s R is a collaborative project with many contributors. 628s Type 'contributors()' for more information and 628s 'citation()' on how to cite R or R packages in publications. 628s 628s Type 'demo()' for some demos, 'help()' for on-line help, or 628s 'help.start()' for an HTML browser interface to help. 628s Type 'q()' to quit R. 628s 628s > library("matrixStats") 628s > 628s > diff2_R <- function(..., useNames=NA){ 628s + res <- diff(...) 628s + if (is.na(useNames) || !useNames) names(res) <- NULL 628s + res 628s + } 628s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 628s > # Subsetted tests 628s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 628s > source("utils/validateIndicesFramework.R") 628s > x <- runif(6, min = -6, max = 6) 628s > for (setNames in c(TRUE, FALSE)) { 628s + if (setNames) names(x) <- LETTERS[1:6] 628s + else names(x) <- NULL 628s + for (l in 1:2) { 628s + for (d in 1:2) { 628s + for (idxs in index_cases) { 628s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 628s + validateIndicesTestVector(x, idxs, 628s + ftest = diff2, fsure = diff2_R, 628s + lag = l, differences = d, useNames = useNames) 628s + } 628s + } 628s + } 628s + } 628s + } 629s > 629s 629s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 629s Copyright (C) 2024 The R Foundation for Statistical Computing 629s Platform: arm-unknown-linux-gnueabihf (32-bit) 629s 629s R is free software and comes with ABSOLUTELY NO WARRANTY. 629s You are welcome to redistribute it under certain conditions. 629s Type 'license()' or 'licence()' for distribution details. 629s 629s R is a collaborative project with many contributors. 629s Type 'contributors()' for more information and 629s 'citation()' on how to cite R or R packages in publications. 629s 629s Type 'demo()' for some demos, 'help()' for on-line help, or 629s 'help.start()' for an HTML browser interface to help. 629s Type 'q()' to quit R. 629s 629s > library("matrixStats") 629s > 629s > indexByRow_R1 <- function(dim, idxs = NULL, ...) { 629s + n <- prod(dim) 629s + x <- matrix(seq_len(n), nrow = dim[2L], ncol = dim[1L], byrow = TRUE) 629s + if (!is.null(idxs)) 629s + x <- x[idxs] 629s + as.vector(x) 629s + } 629s > 629s > 629s > indexByRow_R2 <- function(dim, idxs = NULL, ...) { 629s + n <- prod(dim) 629s + if (is.null(idxs)) { 629s + x <- matrix(seq_len(n), nrow = dim[2L], ncol = dim[1L], byrow = TRUE) 629s + as.vector(x) 629s + } else { 629s + idxs <- idxs - 1L 629s + cols <- idxs %/% dim[2L] 629s + rows <- idxs %% dim[2L] 629s + cols + dim[1L] * rows + 1L 629s + } 629s + } 629s > 629s > 629s > dim <- c(5L, 4L) 629s > x <- matrix(NA_integer_, nrow = dim[1L], ncol = dim[2L]) 629s > y <- t(x) 629s > idxs_by_cols <- seq_along(x) 629s > 629s > # Assign by columns 629s > x[idxs_by_cols] <- idxs_by_cols 629s > print(x) 629s [,1] [,2] [,3] [,4] 629s [1,] 1 6 11 16 629s [2,] 2 7 12 17 629s [3,] 3 8 13 18 629s [4,] 4 9 14 19 629s [5,] 5 10 15 20 629s > 629s > # Truth 629s > y0 <- t(x) 629s > idxs_by_rows <- as.vector(y0) 629s > 629s > # Assert 629s > idxs <- indexByRow(dim) 629s > stopifnot(all.equal(idxs, idxs_by_rows)) 629s > y <- x 629s > y[idxs_by_rows] <- idxs 629s > print(y) 629s [,1] [,2] [,3] [,4] 629s [1,] 1 6 11 16 629s [2,] 2 7 12 17 629s [3,] 3 8 13 18 629s [4,] 4 9 14 19 629s [5,] 5 10 15 20 629s > stopifnot(all(as.vector(y) == as.vector(x))) 629s > 629s > idxs_R1 <- indexByRow_R1(dim) 629s > stopifnot(all.equal(idxs_R1, idxs_by_rows)) 629s > 629s > idxs_R2 <- indexByRow_R2(dim) 629s > stopifnot(all.equal(idxs_R2, idxs_by_rows)) 629s > 629s > # Assert 629s > idxs_by_cols <- seq(from = 1, to = length(x), by = 3L) 629s > idxs_by_rows <- as.vector(t(x)[idxs_by_cols]) 629s > 629s > idxs <- indexByRow(dim, idxs = idxs_by_cols) 629s > stopifnot(all(idxs == idxs_by_rows)) 629s > 629s > idxs_R1 <- indexByRow_R1(dim, idxs = idxs_by_cols) 629s > stopifnot(all(idxs_R1 == idxs_by_rows)) 629s > 629s > idxs_R2 <- indexByRow_R2(dim, idxs = idxs_by_cols) 629s > stopifnot(all(idxs_R2 == idxs_by_rows)) 629s > 629s > 629s > ## DEFUNCT: Backward compatibility 629s > res <- tryCatch({ 629s + idxs1 <- indexByRow(x) 629s + }, error = identity) 629s > stopifnot(inherits(res, "error")) 629s > 629s > 629s > ## Exceptions: 629s > ## Too large matrices are not supported, which happens 629s > ## when prod(dim) > .Machine$integer.max 629s > dim_too_large <- c(.Machine$integer.max, 2L) 629s > res <- tryCatch({ 629s + idxs <- indexByRow(dim_too_large, idxs = 1L) 629s + }, error = identity) 629s > stopifnot(inherits(res, "error")) 629s > 629s > ## Non-positive indices are not supported 629s > res <- tryCatch({ 629s + idxs <- indexByRow(c(1,1), idxs = 0L) 629s + }, error = identity) 629s > stopifnot(inherits(res, "error")) 629s > 629s > res <- tryCatch({ 629s + idxs <- indexByRow(c(1,1), idxs = -1L) 629s + }, error = identity) 629s > stopifnot(inherits(res, "error")) 629s > 629s 629s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 629s Copyright (C) 2024 The R Foundation for Statistical Computing 629s Platform: arm-unknown-linux-gnueabihf (32-bit) 629s 629s R is free software and comes with ABSOLUTELY NO WARRANTY. 629s You are welcome to redistribute it under certain conditions. 629s Type 'license()' or 'licence()' for distribution details. 629s 629s R is a collaborative project with many contributors. 629s Type 'contributors()' for more information and 629s 'citation()' on how to cite R or R packages in publications. 629s 629s Type 'demo()' for some demos, 'help()' for on-line help, or 629s 'help.start()' for an HTML browser interface to help. 629s Type 'q()' to quit R. 629s 630s > library("matrixStats") 630s > library("stats") 630s > 630s > logSumExp_R <- function(lx, na.rm = FALSE) { 630s + log(sum(exp(lx), na.rm = na.rm)) 630s + } 630s > 630s > ## R-help thread \emph{'[R] Beyond double-precision?'} on May 9, 2009. 630s > 630s > for (mode in c("integer", "double")) { 630s + cat("mode: ", mode, "\n", sep = "") 630s + 630s + set.seed(1) 630s + x <- runif(20, min = 1.0, max = 3.0) 630s + storage.mode(x) <- mode 630s + str(x) 630s + 630s + ## The logarithm of the harmonic mean 630s + y0 <- log(1 / mean(1 / x)) 630s + print(y0) ## -1.600885 630s + 630s + lx <- log(x) 630s + y1 <- log(length(x)) - logSumExp(-lx) 630s + print(y1) ## [1] -1.600885 630s + 630s + # Sanity check 630s + stopifnot(all.equal(y1, y0)) 630s + 630s + y2 <- log(length(x)) - logSumExp_R(-lx) 630s + # Sanity check 630s + stopifnot(all.equal(y2, y0)) 630s + } # for (mode ...) 630s mode: integer 630s int [1:20] 1 1 2 2 1 2 2 2 2 1 ... 630s [1] 0.3215836 630s [1] 0.3215836 630s mode: double 630s num [1:20] 1.53 1.74 2.15 2.82 1.4 ... 630s [1] 0.6673156 630s [1] 0.6673156 630s > 630s > 630s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 630s > # Missing values 630s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 630s > ## NA values 630s > lx <- c(1, 2, 3) 630s > lx[2] <- NA_real_ 630s > y0 <- logSumExp_R(lx, na.rm = FALSE) 630s > y <- logSumExp(lx, na.rm = FALSE) 630s > print(y) 630s [1] NA 630s > stopifnot(identical(y, NA_real_)) 630s > stopifnot(all.equal(y, y0)) 630s > 630s > y0 <- logSumExp_R(lx, na.rm = TRUE) 630s > y <- logSumExp(lx, na.rm = TRUE) 630s > print(y) 630s [1] 3.126928 630s > stopifnot(all.equal(y, y0)) 630s > 630s > ## NaN values 630s > lx <- c(1, 2, 3) 630s > lx[2] <- NaN 630s > y0 <- logSumExp_R(lx, na.rm = FALSE) 630s > y <- logSumExp(lx, na.rm = FALSE) 630s > print(y) 630s [1] NA 630s > stopifnot(identical(y, NA_real_)) 630s > stopifnot(all.equal(y, y0)) 630s > 630s > y0 <- logSumExp_R(lx, na.rm = TRUE) 630s > y <- logSumExp(lx, na.rm = TRUE) 630s > print(y) 630s [1] 3.126928 630s > stopifnot(all.equal(y, y0)) 630s > 630s > 630s > 630s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 630s > # Corner cases 630s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 630s > ## Zero-length vectors 630s > lx <- numeric(0L) 630s > y0 <- logSumExp_R(lx) 630s > y <- logSumExp(lx) 630s > print(y) 630s [1] -Inf 630s > stopifnot(identical(y, -Inf)) 630s > stopifnot(all.equal(y, y0)) 630s > 630s > ## Vectors of length one 630s > lx <- 1.0 630s > y0 <- logSumExp_R(lx) 630s > y <- logSumExp(lx) 630s > print(y) 630s [1] 1 630s > stopifnot(identical(y, lx)) 630s > stopifnot(all.equal(y, y0)) 630s > 630s > lx <- NA_real_ 630s > y0 <- logSumExp_R(lx, na.rm = TRUE) 630s > y <- logSumExp(lx, na.rm = TRUE) 630s > print(y) 630s [1] -Inf 630s > stopifnot(identical(y, -Inf)) 630s > stopifnot(all.equal(y, y0)) 630s > 630s > ## All missing values 630s > lx <- c(NA_real_, NA_real_) 630s > y0 <- logSumExp_R(lx, na.rm = TRUE) 630s > y <- logSumExp(lx, na.rm = TRUE) 630s > print(y) 630s [1] -Inf 630s > stopifnot(identical(y, -Inf)) 630s > stopifnot(all.equal(y, y0)) 630s > 630s > lx <- c(NA_real_, NA_real_) 630s > y0 <- logSumExp_R(lx, na.rm = FALSE) 630s > y <- logSumExp(lx, na.rm = FALSE) 630s > print(y) 630s [1] NA 630s > stopifnot(identical(y, NA_real_)) 630s > stopifnot(all.equal(y, y0)) 630s > 630s > 630s > ## +Inf values 630s > lx <- c(1, 2, +Inf) 630s > y0 <- logSumExp_R(lx) 630s > y <- logSumExp(lx) 630s > print(y) 630s [1] Inf 630s > stopifnot(identical(y, +Inf)) 630s > stopifnot(all.equal(y, y0)) 630s > 630s > ## First element is a missing value, cf. PR #33 630s > lx <- c(NA_real_, 1) 630s > y0 <- logSumExp_R(lx) 630s > print(y0) 630s [1] NA 630s > y <- logSumExp(lx, na.rm = FALSE) 630s > print(y) 630s [1] NA 630s > stopifnot(identical(y, NA_real_)) 630s > stopifnot(all.equal(y, y0)) 630s > 630s > y0 <- logSumExp_R(lx, na.rm = TRUE) 630s > print(y0) 630s [1] 1 630s > y <- logSumExp(lx, na.rm = TRUE) 630s > print(y) 630s [1] 1 630s > stopifnot(identical(y, 1)) 630s > stopifnot(all.equal(y, y0)) 630s > 630s > ## Multiple -Inf values, cf. issue #84 630s > lx <- c(-Inf, -Inf) 630s > y0 <- logSumExp_R(lx) 630s > y <- logSumExp(lx) 630s > print(y) 630s [1] -Inf 630s > stopifnot(identical(y, -Inf)) 630s > stopifnot(all.equal(y, y0)) 630s > 630s > lx <- c(-Inf, 5, -Inf) 630s > y0 <- logSumExp_R(lx) 630s > y <- logSumExp(lx) 630s > print(y) 630s [1] 5 630s > stopifnot(identical(y, 5)) 630s > stopifnot(all.equal(y, y0)) 630s > 630s 630s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 630s Copyright (C) 2024 The R Foundation for Statistical Computing 630s Platform: arm-unknown-linux-gnueabihf (32-bit) 630s 630s R is free software and comes with ABSOLUTELY NO WARRANTY. 630s You are welcome to redistribute it under certain conditions. 630s Type 'license()' or 'licence()' for distribution details. 630s 630s R is a collaborative project with many contributors. 630s Type 'contributors()' for more information and 630s 'citation()' on how to cite R or R packages in publications. 630s 630s Type 'demo()' for some demos, 'help()' for on-line help, or 630s 'help.start()' for an HTML browser interface to help. 630s Type 'q()' to quit R. 630s 630s > library("matrixStats") 630s > 630s > logSumExp_R <- function(lx, na.rm = FALSE) { 630s + log(sum(exp(lx), na.rm = na.rm)) 630s + } 630s > 630s > 630s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 630s > # Subsetted tests 630s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 630s > source("utils/validateIndicesFramework.R") 630s > x <- runif(6, min = -6, max = 6) 630s > for (idxs in index_cases) { 630s + validateIndicesTestVector(x, idxs, 630s + ftest = logSumExp, fsure = logSumExp_R, 630s + na.rm = FALSE) 630s + validateIndicesTestVector(x, idxs, 630s + ftest = logSumExp, fsure = logSumExp_R, 630s + na.rm = TRUE) 630s + } 630s > 630s 630s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 630s Copyright (C) 2024 The R Foundation for Statistical Computing 630s Platform: arm-unknown-linux-gnueabihf (32-bit) 630s 630s R is free software and comes with ABSOLUTELY NO WARRANTY. 630s You are welcome to redistribute it under certain conditions. 630s Type 'license()' or 'licence()' for distribution details. 630s 630s R is a collaborative project with many contributors. 630s Type 'contributors()' for more information and 630s 'citation()' on how to cite R or R packages in publications. 630s 630s Type 'demo()' for some demos, 'help()' for on-line help, or 630s 'help.start()' for an HTML browser interface to help. 630s Type 'q()' to quit R. 630s 631s > library("matrixStats") 631s > 631s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 631s > # Consistency checks 631s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 631s > set.seed(1) 631s > 631s > mean2_R <- function(x, na.rm = FALSE, idxs = NULL) { 631s + if (is.null(idxs)) { 631s + mean(x, na.rm = na.rm) 631s + } else { 631s + mean(x[idxs], na.rm = na.rm) 631s + } 631s + } # mean2_R() 631s > 631s > 631s > cat("Consistency checks:\n") 631s Consistency checks: 631s > for (kk in 1:20) { 631s + cat("Random test #", kk, "\n", sep = "") 631s + 631s + # Simulate data in a matrix of any shape 631s + n <- sample(100L, size = 1L) 631s + x <- rnorm(n, sd = 100) 631s + 631s + # Add NAs? 631s + if ((kk %% 4) %in% c(3, 0)) { 631s + cat("Adding NAs\n") 631s + nna <- sample(n, size = 1L) 631s + na_values <- c(NA_real_, NaN) 631s + t <- sample(na_values, size = nna, replace = TRUE) 631s + x[sample(length(x), size = nna)] <- t 631s + } 631s + 631s + # Integer or double? 631s + if ((kk %% 4) %in% c(2, 0)) { 631s + cat("Coercing to integers\n") 631s + storage.mode(x) <- "integer" 631s + } 631s + 631s + na.rm <- sample(c(TRUE, FALSE), size = 1L) 631s + 631s + # Sum over all 631s + y0 <- mean2_R(x, na.rm = na.rm) 631s + y1 <- mean2(x, na.rm = na.rm) 631s + stopifnot(all.equal(y1, y0)) 631s + 631s + # Sum over subset 631s + nidxs <- sample(n, size = 1L) 631s + idxs <- sample(n, size = nidxs) 631s + y0 <- mean2_R(x, na.rm = na.rm, idxs = idxs) 631s + y1 <- mean2(x, na.rm = na.rm, idxs = idxs) 631s + stopifnot(all.equal(y1, y0)) 631s + 631s + if (storage.mode(x) == "integer") { 631s + storage.mode(x) <- "logical" 631s + 631s + y0 <- mean2_R(x, na.rm = na.rm) 631s + y1 <- mean2(x, na.rm = na.rm) 631s + stopifnot(all.equal(y1, y0)) 631s + 631s + y0 <- mean2_R(x, na.rm = na.rm, idxs = idxs) 631s + y1 <- mean2(x, na.rm = na.rm, idxs = idxs) 631s + stopifnot(all.equal(y1, y0)) 631s + } 631s + } # for (kk ...) 631s Random test #1 631s Random test #2 631s Coercing to integers 631s Random test #3 631s Adding NAs 631s Random test #4 631s Adding NAs 631s Coercing to integers 631s Random test #5 631s Random test #6 631s Coercing to integers 631s Random test #7 631s Adding NAs 631s Random test #8 631s Adding NAs 631s Coercing to integers 631s Random test #9 631s Random test #10 631s Coercing to integers 631s Random test #11 631s Adding NAs 631s Random test #12 631s Adding NAs 631s Coercing to integers 631s Random test #13 631s Random test #14 631s Coercing to integers 631s Random test #15 631s Adding NAs 631s Random test #16 631s Adding NAs 631s Coercing to integers 631s Random test #17 631s Random test #18 631s Coercing to integers 631s Random test #19 631s Adding NAs 631s Random test #20 631s Adding NAs 631s Coercing to integers 631s > 631s > 631s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 631s > # Special cases 631s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 631s > for (na.rm in c(FALSE, TRUE)) { 631s + # Averaging over zero elements (integers) 631s + x <- integer(0) 631s + s1 <- mean(x, na.rm = na.rm) 631s + s2 <- mean2(x, na.rm = na.rm) 631s + stopifnot(identical(s1, s2)) 631s + 631s + x <- 1:5 631s + idxs <- integer(0) 631s + s1 <- mean(x[idxs], na.rm = na.rm) 631s + s2 <- mean2(x, idxs = idxs, na.rm = na.rm) 631s + stopifnot(identical(s1, s2)) 631s + 631s + # Averaging over NA_integer_:s 631s + x <- rep(NA_integer_, times = 5L) 631s + s1 <- mean(x, na.rm = na.rm) 631s + s2 <- mean2(x, na.rm = na.rm) 631s + stopifnot(identical(s1, s2)) 631s + 631s + x <- rep(NA_integer_, times = 5L) 631s + idxs <- 1:3 631s + s1 <- mean(x[idxs], na.rm = na.rm) 631s + s2 <- mean2(x, idxs = idxs, na.rm = na.rm) 631s + stopifnot(identical(s1, s2)) 631s + 631s + 631s + # Averaging over zero elements (doubles) 631s + x <- double(0) 631s + s1 <- mean(x) 631s + s2 <- mean2(x) 631s + stopifnot(identical(s1, s2)) 631s + 631s + x <- as.double(1:10) 631s + idxs <- integer(0) 631s + s1 <- mean(x[idxs]) 631s + s2 <- mean2(x, idxs = idxs) 631s + stopifnot(identical(s1, s2)) 631s + 631s + # Averaging over NA_real_:s 631s + x <- rep(NA_real_, times = 5L) 631s + s1 <- mean(x, na.rm = na.rm) 631s + s2 <- mean2(x, na.rm = na.rm) 631s + stopifnot(identical(s1, s2)) 631s + 631s + x <- rep(NA_real_, times = 5L) 631s + idxs <- 1:3 631s + s1 <- mean(x[idxs], na.rm = na.rm) 631s + s2 <- mean2(x, idxs = idxs, na.rm = na.rm) 631s + stopifnot(identical(s1, s2)) 631s + 631s + # Averaging over -Inf:s 631s + x <- rep(-Inf, times = 3L) 631s + s1 <- mean(x, na.rm = na.rm) 631s + s2 <- mean2(x, na.rm = na.rm) 631s + stopifnot(identical(s1, s2)) 631s + 631s + # Averaging over +Inf:s 631s + x <- rep(+Inf, times = 3L) 631s + s1 <- mean(x, na.rm = na.rm) 631s + s2 <- mean2(x, na.rm = na.rm) 631s + stopifnot(identical(s1, s2)) 631s + 631s + # Averaging over mix of -Inf:s and +Inf:s 631s + x <- rep(c(-Inf, +Inf), times = 3L) 631s + s1 <- mean(x, na.rm = na.rm) 631s + s2 <- mean2(x, na.rm = na.rm) 631s + stopifnot(identical(s1, s2)) 631s + 631s + # Averaging over mix of -Inf:s and +Inf:s and numerics 631s + x <- rep(c(-Inf, +Inf, 3.14), times = 2L) 631s + s1 <- mean(x, na.rm = na.rm) 631s + s2 <- mean2(x, na.rm = na.rm) 631s + stopifnot(identical(s1, s2)) 631s + 631s + # Averaging over mix of NaN, NA, +Inf, and numerics 631s + x <- c(NaN, NA, +Inf, 3.14) 631s + s1 <- mean(x, na.rm = na.rm) 631s + s2 <- mean2(x, na.rm = na.rm) 631s + if (na.rm) { 631s + stopifnot(identical(s2, s1)) 631s + } else { 631s + stopifnot(is.na(s1), is.na(s2)) 631s + ## NOTE, due to compiler optimization, it is not guaranteed that NA is 631s + ## returned here (as one would expect). NaN might very well be returned, 631s + ## when both NA and NaN are involved. This is an accepted feature in R, 631s + ## which is documented in help("is.nan"). See also 631s + ## https://stat.ethz.ch/pipermail/r-devel/2017-April/074009.html. 631s + ## Thus, we cannot guarantee that s1 is identical to s0. 631s + } 631s + 631s + # Averaging over mix of NaN, NA_real_, +Inf, and numerics 631s + x <- c(NA_real_, NaN, +Inf, 3.14) 631s + s1 <- mean(x, na.rm = na.rm) 631s + s2 <- mean2(x, na.rm = na.rm) 631s + if (na.rm) { 631s + stopifnot(identical(s2, s1)) 631s + } else { 631s + stopifnot(is.na(s1), is.na(s2)) 631s + ## NOTE, due to compiler optimization, it is not guaranteed that NA is 631s + ## returned here (as one would expect). NaN might very well be returned, 631s + ## when both NA and NaN are involved. This is an accepted feature in R, 631s + ## which is documented in help("is.nan"). See also 631s + ## https://stat.ethz.ch/pipermail/r-devel/2017-April/074009.html. 631s + ## Thus, we cannot guarantee that s1 is identical to s0. 631s + } 631s + } 631s > 631s > 631s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 631s > # Argument 'idxs' 631s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 631s > x <- 1:5 631s > idxs_list <- list( 631s + integer = 1:3, 631s + double = as.double(1:3), 631s + logical = (x <= 3) 631s + ) 631s > 631s > for (idxs in idxs_list) { 631s + cat("idxs:\n") 631s + str(idxs) 631s + s1 <- mean(x[idxs], na.rm = TRUE) 631s + s2 <- mean2(x, idxs = idxs, na.rm = TRUE) 631s + stopifnot(identical(s1, s2)) 631s + } 631s idxs: 631s int [1:3] 1 2 3 631s idxs: 631s num [1:3] 1 2 3 631s idxs: 631s logi [1:5] TRUE TRUE TRUE FALSE FALSE 631s > 631s 631s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 631s Copyright (C) 2024 The R Foundation for Statistical Computing 631s Platform: arm-unknown-linux-gnueabihf (32-bit) 631s 631s R is free software and comes with ABSOLUTELY NO WARRANTY. 631s You are welcome to redistribute it under certain conditions. 631s Type 'license()' or 'licence()' for distribution details. 631s 631s R is a collaborative project with many contributors. 631s Type 'contributors()' for more information and 631s 'citation()' on how to cite R or R packages in publications. 631s 631s Type 'demo()' for some demos, 'help()' for on-line help, or 631s 'help.start()' for an HTML browser interface to help. 631s Type 'q()' to quit R. 631s 631s > library("matrixStats") 631s > 631s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 631s > # Subsetted tests 631s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 631s > source("utils/validateIndicesFramework.R") 631s > x <- runif(6, min = -6, max = 6) 631s > storage.mode(x) <- "integer" 631s > for (idxs in index_cases) { 631s + validateIndicesTestVector(x, idxs, 631s + ftest = mean2, fsure = mean, 631s + na.rm = FALSE) 631s + validateIndicesTestVector(x, idxs, 631s + ftest = mean2, fsure = mean, 631s + na.rm = TRUE) 631s + } 631s > 632s 632s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 632s Copyright (C) 2024 The R Foundation for Statistical Computing 632s Platform: arm-unknown-linux-gnueabihf (32-bit) 632s 632s R is free software and comes with ABSOLUTELY NO WARRANTY. 632s You are welcome to redistribute it under certain conditions. 632s Type 'license()' or 'licence()' for distribution details. 632s 632s R is a collaborative project with many contributors. 632s Type 'contributors()' for more information and 632s 'citation()' on how to cite R or R packages in publications. 632s 632s Type 'demo()' for some demos, 'help()' for on-line help, or 632s 'help.start()' for an HTML browser interface to help. 632s Type 'q()' to quit R. 632s 632s > library("matrixStats") 632s > 632s > for (mode in c("integer", "double")) { 632s + cat("mode: ", mode, "\n", sep = "") 632s + 632s + # Empty vector 632s + x <- 0 632s + storage.mode(x) <- mode 632s + y <- prod(x, na.rm = TRUE) 632s + print(y) 632s + z <- product(x, na.rm = TRUE) 632s + print(z) 632s + stopifnot(all.equal(z, y)) 632s + 632s + # Test negative values 632s + x <- c(1, -4, 2) 632s + storage.mode(x) <- mode 632s + y <- prod(x, na.rm = TRUE) 632s + print(y) 632s + z <- product(x, na.rm = TRUE) 632s + print(z) 632s + stopifnot(all.equal(z, y)) 632s + 632s + # Test missing values 632s + x <- c(1, NA, NaN, 2) 632s + storage.mode(x) <- mode 632s + y <- prod(x, na.rm = TRUE) 632s + print(y) 632s + z <- product(x, na.rm = TRUE) 632s + print(z) 632s + stopifnot(all.equal(z, y)) 632s + 632s + x <- c(1, NA, NaN, 2) 632s + storage.mode(x) <- mode 632s + y <- prod(x, na.rm = FALSE) 632s + print(y) 632s + z <- product(x, na.rm = FALSE) 632s + print(z) 632s + stopifnot(all(is.na(z), is.na(y))) 632s + 632s + x <- c(1, NaN, 2) 632s + storage.mode(x) <- mode 632s + y <- prod(x, na.rm = FALSE) 632s + print(y) 632s + stopifnot(is.na(y)) 632s + z <- product(x, na.rm = FALSE) 632s + print(z) 632s + stopifnot(is.na(z)) 632s + 632s + } # for (mode ...) 632s mode: integer 632s [1] 0 632s [1] 0 632s [1] -8 632s [1] -8 632s [1] 2 632s [1] 2 632s [1] NA 632s [1] NA 632s [1] NA 632s [1] NA 632s mode: double 632s [1] 0 632s [1] 0 632s [1] -8 632s [1] -8 632s [1] 2 632s [1] 2 632s [1] NA 632s [1] NA 632s [1] NaN 632s [1] NA 632s > 632s > 632s > # NAs following 0s 632s > x <- c(0L, NA_integer_) 632s > y <- prod(x, na.rm = FALSE) 632s > print(y) 632s [1] NA 632s > z <- product(x, na.rm = FALSE) 632s > print(z) 632s [1] NA 632s > stopifnot(identical(z, y)) 632s > 632s 632s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 632s Copyright (C) 2024 The R Foundation for Statistical Computing 632s Platform: arm-unknown-linux-gnueabihf (32-bit) 632s 632s R is free software and comes with ABSOLUTELY NO WARRANTY. 632s You are welcome to redistribute it under certain conditions. 632s Type 'license()' or 'licence()' for distribution details. 632s 632s R is a collaborative project with many contributors. 632s Type 'contributors()' for more information and 632s 'citation()' on how to cite R or R packages in publications. 632s 632s Type 'demo()' for some demos, 'help()' for on-line help, or 632s 'help.start()' for an HTML browser interface to help. 632s Type 'q()' to quit R. 632s 632s > library("matrixStats") 632s > 632s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 632s > # Subsetted tests 632s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 632s > source("utils/validateIndicesFramework.R") 632s > x <- runif(6, min = -6, max = 6) 632s > storage.mode(x) <- "integer" 632s > for (idxs in index_cases) { 632s + validateIndicesTestVector(x, idxs, 632s + ftest = product, fsure = prod, 632s + na.rm = TRUE) 632s + validateIndicesTestVector(x, idxs, 632s + ftest = product, fsure = prod, 632s + na.rm = FALSE) 632s + } 632s > 633s 633s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 633s Copyright (C) 2024 The R Foundation for Statistical Computing 633s Platform: arm-unknown-linux-gnueabihf (32-bit) 633s 633s R is free software and comes with ABSOLUTELY NO WARRANTY. 633s You are welcome to redistribute it under certain conditions. 633s Type 'license()' or 'licence()' for distribution details. 633s 633s R is a collaborative project with many contributors. 633s Type 'contributors()' for more information and 633s 'citation()' on how to cite R or R packages in publications. 633s 633s Type 'demo()' for some demos, 'help()' for on-line help, or 633s 'help.start()' for an HTML browser interface to help. 633s Type 'q()' to quit R. 633s 633s > library("matrixStats") 633s > library("utils") ## utils::str 633s > 633s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 633s > # Local functions 633s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 633s > psortKM_R <- function(x, k, m) { 633s + x <- sort(x) 633s + x[(k - m + 1):k] 633s + } 633s > 633s > psortKM_R2 <- function(x, k, m) { 633s + partial <- (k - m + 1):k 633s + x <- sort.int(x, partial = partial) 633s + x[partial] 633s + } 633s > 633s > 633s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 633s > # Consistency checks 633s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 633s > set.seed(1) 633s > 633s > cat("Consistency checks:\n") 633s Consistency checks: 633s > x <- 1:30 633s > x[18:20] <- 20 633s > y <- sample(x) 633s > cat("x:\n") 633s x: 633s > str(x) 633s num [1:30] 1 2 3 4 5 6 7 8 9 10 ... 633s > cat("sample(x):\n") 633s sample(x): 633s > str(y) 633s num [1:30] 25 4 7 1 2 23 11 14 20 20 ... 633s > 633s > for (k in c(1L, 2L, 20L, 21L, length(x))) { 633s + for (m in 1:min(5L, k)) { 633s + px0 <- psortKM_R(x, k = k, m = m) 633s + px0b <- psortKM_R2(x, k = k, m = m) 633s + stopifnot(identical(px0b, px0)) 633s + px1 <- matrixStats:::.psortKM(x, k = k, m = m) 633s + cat(sprintf(".psortKM(x, k = %d, m = %d):\n", k, m)) 633s + print(px1) 633s + stopifnot(identical(px1, px0)) 633s + 633s + py0 <- psortKM_R(y, k = k, m = m) 633s + py0b <- psortKM_R2(y, k = k, m = m) 633s + stopifnot(identical(py0b, py0)) 633s + py1 <- matrixStats:::.psortKM(y, k = k, m = m) 633s + cat(sprintf(".psortKM(y, k = %d, m = %d):\n", k, m)) 633s + print(py1) 633s + stopifnot(identical(py1, py0)) 633s + stopifnot(identical(py1, px1)) 633s + } # for (m ...) 633s + } # for (k ...) 633s .psortKM(x, k = 1, m = 1): 633s [1] 1 633s .psortKM(y, k = 1, m = 1): 633s [1] 1 633s .psortKM(x, k = 2, m = 1): 633s [1] 2 633s .psortKM(y, k = 2, m = 1): 633s [1] 2 633s .psortKM(x, k = 2, m = 2): 633s [1] 1 2 633s .psortKM(y, k = 2, m = 2): 633s [1] 1 2 633s .psortKM(x, k = 20, m = 1): 633s [1] 20 633s .psortKM(y, k = 20, m = 1): 633s [1] 20 633s .psortKM(x, k = 20, m = 2): 633s [1] 20 20 633s .psortKM(y, k = 20, m = 2): 633s [1] 20 20 633s .psortKM(x, k = 20, m = 3): 633s [1] 20 20 20 633s .psortKM(y, k = 20, m = 3): 633s [1] 20 20 20 633s .psortKM(x, k = 20, m = 4): 633s [1] 17 20 20 20 633s .psortKM(y, k = 20, m = 4): 633s [1] 17 20 20 20 633s .psortKM(x, k = 20, m = 5): 633s [1] 16 17 20 20 20 633s .psortKM(y, k = 20, m = 5): 633s [1] 16 17 20 20 20 633s .psortKM(x, k = 21, m = 1): 633s [1] 21 633s .psortKM(y, k = 21, m = 1): 633s [1] 21 633s .psortKM(x, k = 21, m = 2): 633s [1] 20 21 633s .psortKM(y, k = 21, m = 2): 633s [1] 20 21 633s .psortKM(x, k = 21, m = 3): 633s [1] 20 20 21 633s .psortKM(y, k = 21, m = 3): 633s [1] 20 20 21 633s .psortKM(x, k = 21, m = 4): 633s [1] 20 20 20 21 633s .psortKM(y, k = 21, m = 4): 633s [1] 20 20 20 21 633s .psortKM(x, k = 21, m = 5): 633s [1] 17 20 20 20 21 633s .psortKM(y, k = 21, m = 5): 633s [1] 17 20 20 20 21 633s .psortKM(x, k = 30, m = 1): 633s [1] 30 633s .psortKM(y, k = 30, m = 1): 633s [1] 30 633s .psortKM(x, k = 30, m = 2): 633s [1] 29 30 633s .psortKM(y, k = 30, m = 2): 633s [1] 29 30 633s .psortKM(x, k = 30, m = 3): 633s [1] 28 29 30 633s .psortKM(y, k = 30, m = 3): 633s [1] 28 29 30 633s .psortKM(x, k = 30, m = 4): 633s [1] 27 28 29 30 633s .psortKM(y, k = 30, m = 4): 633s [1] 27 28 29 30 633s .psortKM(x, k = 30, m = 5): 633s [1] 26 27 28 29 30 633s .psortKM(y, k = 30, m = 5): 633s [1] 26 27 28 29 30 633s > 633s 633s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 633s Copyright (C) 2024 The R Foundation for Statistical Computing 633s Platform: arm-unknown-linux-gnueabihf (32-bit) 633s 633s R is free software and comes with ABSOLUTELY NO WARRANTY. 633s You are welcome to redistribute it under certain conditions. 633s Type 'license()' or 'licence()' for distribution details. 633s 633s R is a collaborative project with many contributors. 633s Type 'contributors()' for more information and 633s 'citation()' on how to cite R or R packages in publications. 633s 633s Type 'demo()' for some demos, 'help()' for on-line help, or 633s 'help.start()' for an HTML browser interface to help. 633s Type 'q()' to quit R. 633s 633s > library("matrixStats") 633s > 633s > rowAlls_R <- function(x, value = TRUE, na.rm = FALSE, ..., useNames = NA) { 633s + if (is.na(value)) { 633s + res <- apply(is.na(x), MARGIN = 1L, FUN = all, na.rm = na.rm) 633s + } else { 633s + y <- x == value 633s + 633s + # Preserve dimnames attribute 633s + dim <- dim(x) # for 0xN and Mx0 cases; needed in R (< 3.4.0) 633s + if (!isTRUE(all.equal(dim(y), dim))) { 633s + dim(y) <- dim 633s + dimnames(y) <- dimnames(x) 633s + } 633s + 633s + res <- apply(y, MARGIN = 1L, FUN = all, na.rm = na.rm) 633s + } 633s + if (is.na(useNames) || !useNames) names(res) <- NULL 633s + res 633s + } 633s > 633s > rowAnys_R <- function(x, value = TRUE, na.rm = FALSE, ..., useNames = NA) { 633s + if (is.na(value)) { 633s + res <- apply(is.na(x), MARGIN = 1L, FUN = any, na.rm = na.rm) 633s + } else { 633s + y <- x == value 633s + 633s + # Preserve dimnames attribute 633s + dim <- dim(x) # for 0xN and Mx0 cases; needed in R (< 3.4.0) 633s + if (!isTRUE(all.equal(dim(y), dim))) { 633s + dim(y) <- dim 633s + dimnames(y) <- dimnames(x) 633s + } 633s + 633s + res <- apply(y, MARGIN = 1L, FUN = any, na.rm = na.rm) 633s + } 633s + if (is.na(useNames) || !useNames) names(res) <- NULL 633s + res 633s + } 633s > 633s > rowAnyMissings_R <- function(x, ..., useNames = NA) { 633s + res <- apply(x, MARGIN = 1L, FUN = anyMissing) 633s + if (is.na(useNames) || !useNames) names(res) <- NULL 633s + res 633s + } 633s > 633s > 633s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 633s > # Data type: logical 633s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 633s > x <- matrix(FALSE, nrow = 10L, ncol = 4L) 633s > x[7:8, 2:3] <- TRUE 633s > x[1:3, ] <- TRUE 633s > x[, 1] <- TRUE 633s > x[4, ] <- FALSE 633s > x[, 4] <- FALSE 633s > x[2, ] <- FALSE 633s > x[3, ] <- TRUE 633s > 633s > # To check names attribute 633s > dimnames <- list(letters[1:10], LETTERS[1:4]) 633s > 633s > for (kk in 1:3) { 633s + if (kk == 2) { 633s + x[2, 2] <- NA 633s + } else if (kk == 3) { 633s + x[, 2] <- NA 633s + x[2, ] <- NA 633s + } 633s + 633s + # Test with and without dimnames on x 633s + for (setDimnames in c(TRUE, FALSE)) { 633s + dimnames(x) <- if (setDimnames) dimnames else NULL 633s + 633s + for (na.rm in c(FALSE, TRUE)) { 633s + # Check names attribute 633s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 633s + m0 <- rowAlls_R(x, na.rm = na.rm, useNames = useNames) 633s + m1 <- rowAlls(x, na.rm = na.rm, useNames = useNames) 633s + m2 <- colAlls(t(x), na.rm = na.rm, useNames = useNames) 633s + str(list("all()", m0 = m0, m1 = m1, m2 = m2)) 633s + stopifnot(identical(m1, m0)) 633s + stopifnot(identical(m2, m0)) 633s + 633s + m0 <- rowAnys_R(x, na.rm = na.rm, useNames = useNames) 633s + m1 <- rowAnys(x, na.rm = na.rm, useNames = useNames) 633s + m2 <- colAnys(t(x), na.rm = na.rm, useNames = useNames) 633s + str(list("any()", m0 = m0, m1 = m1, m2 = m2)) 633s + stopifnot(identical(m1, m0)) 633s + stopifnot(identical(m2, m0)) 633s + 633s + m0 <- rowAnyMissings_R(x, useNames = useNames) 633s + m1 <- rowAnyMissings(x, useNames = useNames) 633s + m2 <- colAnyMissings(t(x), useNames = useNames) 633s + str(list("anyMissing()", m0 = m0, m1 = m1, m2 = m2)) 633s + stopifnot(identical(m1, m0)) 633s + stopifnot(identical(m2, m0)) 633s + } 633s + } 633s + } 633s + } # for (kk ...) 634s List of 4 634s $ : chr "all()" 634s $ m0: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m1: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m2: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s List of 4 634s $ : chr "any()" 634s $ m0: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m1: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m2: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: Named logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m1: Named logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m2: Named logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s List of 4 634s $ : chr "all()" 634s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "any()" 634s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "all()" 634s $ m0: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m1: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m2: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s List of 4 634s $ : chr "any()" 634s $ m0: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m1: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m2: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: Named logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m1: Named logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m2: Named logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s List of 4 634s $ : chr "all()" 634s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "any()" 634s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "all()" 634s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "any()" 634s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "all()" 634s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "any()" 634s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "all()" 634s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "any()" 634s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "all()" 634s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "any()" 634s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "all()" 634s $ m0: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m1: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m2: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s List of 4 634s $ : chr "any()" 634s $ m0: Named logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m1: Named logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m2: Named logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: Named logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m1: Named logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m2: Named logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s List of 4 634s $ : chr "all()" 634s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "any()" 634s $ m0: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 634s $ m1: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 634s $ m2: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "all()" 634s $ m0: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m1: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m2: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s List of 4 634s $ : chr "any()" 634s $ m0: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m1: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m2: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: Named logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m1: Named logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m2: Named logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s List of 4 634s $ : chr "all()" 634s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "any()" 634s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "all()" 634s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "any()" 634s $ m0: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 634s $ m1: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 634s $ m2: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "all()" 634s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "any()" 634s $ m0: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 634s $ m1: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 634s $ m2: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "all()" 634s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "any()" 634s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "all()" 634s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "any()" 634s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "all()" 634s $ m0: Named logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m1: Named logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m2: Named logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s List of 4 634s $ : chr "any()" 634s $ m0: Named logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m1: Named logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m2: Named logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: Named logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m1: Named logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m2: Named logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s List of 4 634s $ : chr "all()" 634s $ m0: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "any()" 634s $ m0: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 634s $ m1: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 634s $ m2: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s $ m1: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s $ m2: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s List of 4 634s $ : chr "all()" 634s $ m0: Named logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m1: Named logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m2: Named logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s List of 4 634s $ : chr "any()" 634s $ m0: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m1: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m2: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: Named logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m1: Named logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s $ m2: Named logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 634s List of 4 634s $ : chr "all()" 634s $ m0: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "any()" 634s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s $ m1: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s $ m2: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s List of 4 634s $ : chr "all()" 634s $ m0: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "any()" 634s $ m0: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 634s $ m1: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 634s $ m2: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s $ m1: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s $ m2: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s List of 4 634s $ : chr "all()" 634s $ m0: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "any()" 634s $ m0: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 634s $ m1: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 634s $ m2: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s $ m1: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s $ m2: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s List of 4 634s $ : chr "all()" 634s $ m0: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "any()" 634s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s $ m1: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s $ m2: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s List of 4 634s $ : chr "all()" 634s $ m0: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 634s $ m1: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 634s $ m2: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 634s List of 4 634s $ : chr "any()" 634s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 634s List of 4 634s $ : chr "anyMissing()" 634s $ m0: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s $ m1: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s $ m2: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 634s > 634s > 634s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 634s > # Data type: integer 634s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 634s > x <- matrix(rep(1:6, length.out = 4 * 5), nrow = 4L, ncol = 5L) 634s > x[2, ] <- 7L 634s > x[3, 1] <- 7L 634s > x[2:3, 3:4] <- NA_integer_ 634s > 634s > # To check names attribute 634s > dimnames <- list(letters[1:4], LETTERS[1:5]) 634s > 634s > # Row/column counts 634s > value <- 7L 634s > 634s > # Test with and without dimnames on x 634s > for (setDimnames in c(TRUE, FALSE)) { 634s + dimnames(x) <- if (setDimnames) dimnames else NULL 634s + for (na.rm in c(FALSE, TRUE)) { 634s + # Check names attribute 634s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 634s + r0 <- rowAlls_R(x, value = value, na.rm = na.rm, useNames = useNames) 634s + r1 <- rowAlls(x, value = value, na.rm = na.rm, useNames = useNames) 634s + r2 <- colAlls(t(x), value = value, na.rm = na.rm, useNames = useNames) 634s + stopifnot(identical(r1, r0)) 634s + stopifnot(identical(r2, r1)) 634s + if (!is.na(useNames) && !useNames && !setDimnames) { 634s + for (rr in seq_len(nrow(x))) { 634s + c <- allValue(x[rr, ], value = value, na.rm = na.rm) 634s + stopifnot(identical(c, r1[rr])) 634s + c <- allValue(x[rr, ], value = value, na.rm = na.rm) 634s + stopifnot(identical(c, r1[rr])) 634s + } 634s + } 634s + 634s + r0 <- rowAnys_R(x, value = value, na.rm = na.rm, useNames = useNames) 634s + r1 <- rowAnys(x, value = value, na.rm = na.rm, useNames = useNames) 634s + r2 <- colAnys(t(x), value = value, na.rm = na.rm, useNames = useNames) 634s + stopifnot(identical(r1, r0)) 634s + stopifnot(identical(r2, r1)) 634s + if (!is.na(useNames) && !useNames && !setDimnames) { 634s + for (rr in seq_len(nrow(x))) { 634s + c <- anyValue(x[rr, ], value = value, na.rm = na.rm) 634s + stopifnot(identical(c, r1[rr])) 634s + c <- anyValue(x[rr, ], value = value, na.rm = na.rm) 634s + stopifnot(identical(c, r1[rr])) 634s + } 634s + } 634s + } 634s + } 634s + } 634s > 634s > 634s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 634s > # rowAlls(x) et al. on numeric 'x' with logical 'value' 634s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 634s > x <- matrix(0, nrow = 4L, ncol = 5L) 634s > x[2:4, 2] <- (1:3) / 4 634s > x[2, 2:4] <- (1:3) / 4 634s > x[3:4, 3] <- (3:4) / 4 634s > x[3, 3:4] <- (3:4) / 4 634s > x[1:4, 5] <- (1:4) / 5 634s > x[4, 4] <- NA_real_ 634s > 634s > # To check names attribute 634s > dimnames <- list(letters[1:4], LETTERS[1:5]) 634s > 634s > for (value in c(TRUE, FALSE)) { 634s + for (na.rm in c(FALSE, TRUE)) { 634s + y0 <- suppressWarnings(apply(x, MARGIN = 1L, FUN = function(e) any(as.logical(e) == value, na.rm = na.rm))) 634s + y <- rowAnys(x, na.rm = na.rm, value = value) 634s + stopifnot(identical(y, y0)) 634s + # Check names attribute 634s + dimnames(x) <- dimnames 634s + y <- rowAnys(x, na.rm = na.rm, value = value, useNames = FALSE) 634s + stopifnot(all.equal(y, y0)) 634s + y0 <- suppressWarnings(apply(x, MARGIN = 1L, FUN = function(e) any(as.logical(e) == value, na.rm = na.rm))) 634s + y <- rowAnys(x, na.rm = na.rm, value = value, useNames = TRUE) 634s + stopifnot(all.equal(y, y0)) 634s + dimnames(x) <- NULL 634s + 634s + y0 <- suppressWarnings(apply(x, MARGIN = 2L, FUN = function(e) any(as.logical(e) == value, na.rm = na.rm))) 634s + y <- colAnys(x, na.rm = na.rm, value = value) 634s + stopifnot(identical(y, y0)) 634s + # Check names attribute 634s + dimnames(x) <- dimnames 634s + y <- colAnys(x, na.rm = na.rm, value = value, useNames = FALSE) 634s + stopifnot(all.equal(y, y0)) 634s + y0 <- suppressWarnings(apply(x, MARGIN = 2L, FUN = function(e) any(as.logical(e) == value, na.rm = na.rm))) 634s + y <- colAnys(x, na.rm = na.rm, value = value, useNames = TRUE) 634s + stopifnot(all.equal(y, y0)) 634s + dimnames(x) <- NULL 634s + 634s + y0 <- suppressWarnings(apply(x, MARGIN = 1L, FUN = function(e) all(as.logical(e) == value, na.rm = na.rm))) 634s + y <- rowAlls(x, na.rm = na.rm, value = value) 634s + stopifnot(identical(y, y0)) 634s + # Check names attribute 634s + dimnames(x) <- dimnames 634s + y <- rowAlls(x, na.rm = na.rm, value = value, useNames = FALSE) 634s + stopifnot(all.equal(y, y0)) 634s + y0 <- suppressWarnings(apply(x, MARGIN = 1L, FUN = function(e) all(as.logical(e) == value, na.rm = na.rm))) 634s + y <- rowAlls(x, na.rm = na.rm, value = value, useNames = TRUE) 634s + stopifnot(all.equal(y, y0)) 634s + dimnames(x) <- NULL 634s + 634s + y0 <- suppressWarnings(apply(x, MARGIN = 2L, FUN = function(e) all(as.logical(e) == value, na.rm = na.rm))) 634s + y <- colAlls(x, na.rm = na.rm, value = value) 634s + stopifnot(identical(y, y0)) 634s + print(y0) 634s + # Check names attribute 634s + dimnames(x) <- dimnames 634s + y <- colAlls(x, na.rm = na.rm, value = value, useNames = FALSE) 634s + stopifnot(all.equal(y, y0)) 634s + y0 <- suppressWarnings(apply(x, MARGIN = 2L, FUN = function(e) all(as.logical(e) == value, na.rm = na.rm))) 634s + y <- colAlls(x, na.rm = na.rm, value = value, useNames = TRUE) 634s + stopifnot(all.equal(y, y0)) 634s + dimnames(x) <- NULL 634s + } ## for (na.rm ...) 634s + } ## for(value ...) 634s [1] FALSE FALSE FALSE FALSE TRUE 634s [1] FALSE FALSE FALSE FALSE TRUE 634s [1] TRUE FALSE FALSE FALSE FALSE 634s [1] TRUE FALSE FALSE FALSE FALSE 634s > 634s > 634s > 634s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 634s > # Data type: character (not sure if this should be supported) 634s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 634s > all_R <- function(x, value = TRUE, ...) { 634s + if (is.na(value)) { 634s + all(is.na(x), ...) 634s + } else { 634s + all(x == value, ...) 634s + } 634s + } 634s > 634s > any_R <- function(x, value = TRUE, ...) { 634s + if (is.na(value)) { 634s + any(is.na(x), ...) 634s + } else { 634s + any(x == value, ...) 634s + } 634s + } 634s > 634s > x <- matrix(rep(letters, length.out = 10 * 5), nrow = 10L, ncol = 5L) 634s > x[2, ] <- "g" 634s > x[2:4, 3:4] <- NA_character_ 634s > 634s > # To check names attribute 634s > dimnames <- list(letters[1:10], LETTERS[1:5]) 634s > 634s > # Test with and without dimnames on x 634s > for (setDimnames in c(TRUE, FALSE)) { 634s + dimnames(x) <- if (setDimnames) dimnames else NULL 634s + 634s + # Row/column counts 634s + for (value in c("g", NA_character_)) { 634s + for (na.rm in c(FALSE, TRUE)) { 634s + # Check names attribute 634s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 634s + r0 <- rowAlls_R(x, value = value, na.rm = na.rm, useNames = useNames) 634s + r1 <- rowAlls(x, value = value, na.rm = na.rm, useNames = useNames) 634s + r2 <- colAlls(t(x), value = value, na.rm = na.rm, useNames = useNames) 634s + stopifnot(identical(r1, r0)) 634s + stopifnot(identical(r2, r1)) 634s + if (!is.na(useNames) && !useNames && !setDimnames) { 634s + for (rr in seq_len(nrow(x))) { 634s + c0 <- all_R(x[rr, ], value, na.rm = na.rm) 634s + c <- allValue(x[rr, ], value = value, na.rm = na.rm) 634s + stopifnot(identical(c, r1[rr])) 634s + stopifnot(identical(c, c0)) 634s + } 634s + } 634s + 634s + r0 <- rowAnys_R(x, value = value, na.rm = na.rm, useNames = useNames) 634s + r1 <- rowAnys(x, value = value, na.rm = na.rm, useNames = useNames) 634s + r2 <- colAnys(t(x), value = value, na.rm = na.rm, useNames = useNames) 634s + stopifnot(identical(r1, r0)) 634s + stopifnot(identical(r2, r1)) 634s + if (!is.na(useNames) && !useNames && !setDimnames) { 634s + for (rr in seq_len(nrow(x))) { 634s + c0 <- any_R(x[rr, ], value, na.rm = na.rm) 634s + c <- anyValue(x[rr, ], value = value, na.rm = na.rm) 634s + stopifnot(identical(c, c0)) 634s + stopifnot(identical(c, r1[rr])) 634s + } 634s + } 634s + } 634s + } 634s + } 634s + } 635s > 635s > 635s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 635s > # NA 0 test 635s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 635s > x <- matrix(0, nrow = 3L, ncol = 3L) 635s > x[1, ] <- c(NA_real_, NA_real_, 0) 635s > x[3, ] <- c(1, 0, 1) 635s > 635s > dimnames <- list(letters[1:3], LETTERS[1:3]) 635s > 635s > # Test with and without dimnames on x 635s > for (setDimnames in c(TRUE, FALSE)) { 635s + dimnames(x) <- if (setDimnames) dimnames else NULL 635s + # Check names attribute 635s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 635s + r0 <- rowAnys_R(x, value = 0, useNames = useNames) 635s + r1 <- rowAnys(x, value = 0, useNames = useNames) 635s + stopifnot(identical(r0, r1)) 635s + } 635s + } 635s > 635s 635s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 635s Copyright (C) 2024 The R Foundation for Statistical Computing 635s Platform: arm-unknown-linux-gnueabihf (32-bit) 635s 635s R is free software and comes with ABSOLUTELY NO WARRANTY. 635s You are welcome to redistribute it under certain conditions. 635s Type 'license()' or 'licence()' for distribution details. 635s 635s R is a collaborative project with many contributors. 635s Type 'contributors()' for more information and 635s 'citation()' on how to cite R or R packages in publications. 635s 635s Type 'demo()' for some demos, 'help()' for on-line help, or 635s 'help.start()' for an HTML browser interface to help. 635s Type 'q()' to quit R. 635s 635s > library("matrixStats") 635s > 635s > rowAlls_R <- function(x, value = TRUE, na.rm = FALSE, ..., useNames = NA) { 635s + if (is.na(value)) { 635s + res <- apply(is.na(x), MARGIN = 1L, FUN = all, na.rm = na.rm) 635s + } else { 635s + y <- x == value 635s + 635s + # Preserve dimnames attribute 635s + dim <- dim(x) # for 0xN and Mx0 cases; needed in R (< 3.4.0) 635s + if (!isTRUE(all.equal(dim(y), dim))) { 635s + dim(y) <- dim 635s + dimnames(y) <- dimnames(x) 635s + } 635s + 635s + res <- apply(y, MARGIN = 1L, FUN = all, na.rm = na.rm) 635s + } 635s + if (is.na(useNames) || !useNames) names(res) <- NULL 635s + res 635s + } 635s > 635s > rowAnys_R <- function(x, value = TRUE, na.rm = FALSE, ..., useNames = NA) { 635s + if (is.na(value)) { 635s + res <- apply(is.na(x), MARGIN = 1L, FUN = any, na.rm = na.rm) 635s + } else { 635s + y <- x == value 635s + 635s + # Preserve dimnames attribute 635s + dim <- dim(x) # for 0xN and Mx0 cases; needed in R (< 3.4.0) 635s + if (!isTRUE(all.equal(dim(y), dim))) { 635s + dim(y) <- dim 635s + dimnames(y) <- dimnames(x) 635s + } 635s + 635s + res <- apply(y, MARGIN = 1L, FUN = any, na.rm = na.rm) 635s + } 635s + if (is.na(useNames) || !useNames) names(res) <- NULL 635s + res 635s + } 635s > 635s > rowAnyMissings_R <- function(x, ..., useNames = NA) { 635s + res <- apply(x, MARGIN = 1L, FUN = anyMissing) 635s + if (is.na(useNames) || !useNames) names(res) <- NULL 635s + res 635s + } 635s > 635s > 635s > all_R <- function(x, value = TRUE, ...) { 635s + if (is.na(value)) { 635s + all(is.na(x), ...) 635s + } else { 635s + all(x == value, ...) 635s + } 635s + } 635s > 635s > any_R <- function(x, value = TRUE, ...) { 635s + if (is.na(value)) { 635s + any(is.na(x), ...) 635s + } else { 635s + any(x == value, ...) 635s + } 635s + } 635s > 635s > 635s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 635s > # Subsetted tests 635s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 635s > source("utils/validateIndicesFramework.R") 635s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 635s > storage.mode(x) <- "integer" 635s > x[2:3, ] <- NA_integer_ 635s > x[2, 1] <- 0L 635s > x[4:5, ] <- 0L 635s > x[4, 6] <- NA_integer_ 635s > 635s > # To check names attribute 635s > dimnames <- list(letters[1:6], LETTERS[1:6]) 635s > 635s > # Test with and without dimnames on x 635s > for (setDimnames in c(TRUE, FALSE)) { 635s + if (setDimnames) dimnames(x) <- dimnames 635s + else dimnames(x) <- NULL 635s + 635s + count <- 0L 635s + for (rows in index_cases) { 635s + for (cols in index_cases) { 635s + count <- count + 1L 635s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 635s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 635s + useNames <- useNames[count %% length(useNames) + 1] 635s + 635s + validateIndicesTestMatrix(x, rows, cols, 635s + ftest = rowAlls, fsure = rowAlls_R, 635s + value = 0, na.rm = TRUE, useNames = useNames) 635s + validateIndicesTestMatrix(x, rows, cols, 635s + ftest = rowAlls, fsure = rowAlls_R, 635s + value = 0, na.rm = FALSE, useNames = useNames) 635s + validateIndicesTestMatrix(x, rows, cols, 635s + ftest = rowAlls, fsure = rowAlls_R, 635s + value = NA_integer_, useNames = useNames) 635s + validateIndicesTestMatrix(x, rows, cols, 635s + fcoltest = colAlls, fsure = rowAlls_R, 635s + value = 0, na.rm = TRUE, useNames = useNames) 635s + validateIndicesTestMatrix(x, rows, cols, 635s + fcoltest = colAlls, fsure = rowAlls_R, 635s + value = 0, na.rm = FALSE, useNames = useNames) 635s + validateIndicesTestMatrix(x, rows, cols, 635s + fcoltest = colAlls, fsure = rowAlls_R, 635s + value = NA_integer_, useNames = useNames) 635s + 635s + validateIndicesTestMatrix(x, rows, cols, 635s + ftest = rowAnys, fsure = rowAnys_R, 635s + value = 0, na.rm = TRUE, useNames = useNames) 635s + validateIndicesTestMatrix(x, rows, cols, 635s + ftest = rowAnys, fsure = rowAnys_R, 635s + value = 0, na.rm = FALSE, useNames = useNames) 635s + validateIndicesTestMatrix(x, rows, cols, 635s + ftest = rowAnys, fsure = rowAnys_R, 635s + value = NA_integer_, useNames = useNames) 635s + validateIndicesTestMatrix(x, rows, cols, 635s + fcoltest = colAnys, fsure = rowAnys_R, 635s + value = 0, na.rm = TRUE, useNames = useNames) 635s + validateIndicesTestMatrix(x, rows, cols, 635s + fcoltest = colAnys, fsure = rowAnys_R, 635s + value = 0, na.rm = FALSE, useNames = useNames) 635s + validateIndicesTestMatrix(x, rows, cols, 635s + fcoltest = colAnys, fsure = rowAnys_R, 635s + value = NA_integer_, useNames = useNames) 635s + 635s + validateIndicesTestMatrix(x, rows, cols, 635s + ftest = rowAnyMissings, 635s + fsure = rowAnyMissings_R, useNames = useNames) 635s + validateIndicesTestMatrix(x, rows, cols, 635s + fcoltest = colAnyMissings, 635s + fsure = rowAnyMissings_R, useNames = useNames) 635s + } 635s + } 635s + } 640s > 640s > for (rr in seq_len(nrow(x))) { 640s + for (idxs in index_cases) { 640s + validateIndicesTestVector(x[rr, ], idxs, 640s + ftest = allValue, fsure = all_R, 640s + value = 0, na.rm = TRUE) 640s + validateIndicesTestVector(x[rr, ], idxs, 640s + ftest = allValue, fsure = all_R, 640s + value = 0, na.rm = FALSE) 640s + validateIndicesTestVector(x[rr, ], idxs, 640s + ftest = allValue, fsure = all_R, 640s + value = NA_integer_) 640s + 640s + validateIndicesTestVector(x[rr, ], idxs, 640s + ftest = anyValue, fsure = any_R, 640s + value = 0, na.rm = TRUE) 640s + validateIndicesTestVector(x[rr, ], idxs, 640s + ftest = anyValue, fsure = any_R, 640s + value = 0, na.rm = FALSE) 640s + validateIndicesTestVector(x[rr, ], idxs, 641s + ftest = anyValue, fsure = any_R, 641s + value = NA_integer_) 641s + } 641s + } 641s > 641s > 641s > storage.mode(x) <- "character" 641s > # Test with and without dimnames on x 641s > for (setDimnames in c(TRUE, FALSE)) { 641s + if (setDimnames) dimnames(x) <- dimnames 641s + else dimnames(x) <- NULL 641s + for (rows in index_cases) { 641s + for (cols in index_cases) { 641s + # Check names attribute 641s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 641s + validateIndicesTestMatrix(x, rows, cols, 641s + ftest = rowAlls, fsure = rowAlls_R, 641s + value = "0", na.rm = TRUE, useNames = useNames) 641s + validateIndicesTestMatrix(x, rows, cols, 641s + ftest = rowAlls, fsure = rowAlls_R, 641s + value = "0", na.rm = FALSE, useNames = useNames) 641s + validateIndicesTestMatrix(x, rows, cols, 641s + ftest = rowAlls, fsure = rowAlls_R, 641s + value = NA_character_, useNames = useNames) 641s + validateIndicesTestMatrix(x, rows, cols, 641s + fcoltest = colAlls, fsure = rowAlls_R, 641s + value = "0", na.rm = TRUE, useNames = useNames) 641s + validateIndicesTestMatrix(x, rows, cols, 641s + fcoltest = colAlls, fsure = rowAlls_R, 641s + value = "0", na.rm = FALSE, useNames = useNames) 641s + validateIndicesTestMatrix(x, rows, cols, 641s + fcoltest = colAlls, fsure = rowAlls_R, 641s + value = NA_character_, useNames = useNames) 641s + 641s + validateIndicesTestMatrix(x, rows, cols, 641s + ftest = rowAnys, fsure = rowAnys_R, 641s + value = "0", na.rm = TRUE, useNames = useNames) 641s + validateIndicesTestMatrix(x, rows, cols, 641s + ftest = rowAnys, fsure = rowAnys_R, 641s + value = "0", na.rm = FALSE, useNames = useNames) 641s + validateIndicesTestMatrix(x, rows, cols, 641s + ftest = rowAnys, fsure = rowAnys_R, 641s + value = NA_character_, useNames = useNames) 641s + validateIndicesTestMatrix(x, rows, cols, 641s + fcoltest = colAnys, fsure = rowAnys_R, 641s + value = "0", na.rm = TRUE, useNames = useNames) 641s + validateIndicesTestMatrix(x, rows, cols, 641s + fcoltest = colAnys, fsure = rowAnys_R, 641s + value = "0", na.rm = FALSE, useNames = useNames) 641s + validateIndicesTestMatrix(x, rows, cols, 641s + fcoltest = colAnys, fsure = rowAnys_R, 641s + value = NA_character_, useNames = useNames) 641s + 641s + validateIndicesTestMatrix(x, rows, cols, 641s + ftest = rowAnyMissings, 641s + fsure = rowAnyMissings_R, useNames = useNames) 641s + validateIndicesTestMatrix(x, rows, cols, 641s + fcoltest = colAnyMissings, 641s + fsure = rowAnyMissings_R, useNames = useNames) 641s + } 641s + } 641s + } 641s + } 652s > 652s > for (rr in seq_len(nrow(x))) { 652s + for (idxs in index_cases) { 652s + validateIndicesTestVector(x[rr, ], idxs, 652s + ftest = allValue, fsure = all_R, 652s + value = "0", na.rm = TRUE) 652s + validateIndicesTestVector(x[rr, ], idxs, 652s + ftest = allValue, fsure = all_R, 652s + value = "0", na.rm = FALSE) 652s + validateIndicesTestVector(x[rr, ], idxs, 652s + ftest = allValue, fsure = all_R, 652s + value = NA_integer_) 652s + 652s + validateIndicesTestVector(x[rr, ], idxs, 652s + ftest = anyValue, fsure = any_R, 652s + value = "0", na.rm = TRUE) 652s + validateIndicesTestVector(x[rr, ], idxs, 652s + ftest = anyValue, fsure = any_R, 652s + value = "0", na.rm = FALSE) 652s + validateIndicesTestVector(x[rr, ], idxs, 652s + ftest = anyValue, fsure = any_R, 652s + value = NA_integer_) 652s + } 652s + } 652s > 652s 652s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 652s Copyright (C) 2024 The R Foundation for Statistical Computing 652s Platform: arm-unknown-linux-gnueabihf (32-bit) 652s 652s R is free software and comes with ABSOLUTELY NO WARRANTY. 652s You are welcome to redistribute it under certain conditions. 652s Type 'license()' or 'licence()' for distribution details. 652s 652s R is a collaborative project with many contributors. 652s Type 'contributors()' for more information and 652s 'citation()' on how to cite R or R packages in publications. 652s 652s Type 'demo()' for some demos, 'help()' for on-line help, or 652s 'help.start()' for an HTML browser interface to help. 652s Type 'q()' to quit R. 652s 653s > library("matrixStats") 653s > 653s > X <- matrix(rnorm(20 * 6), nrow = 20, ncol = 6) 653s > rownames(X) <- LETTERS[1:nrow(X)] 653s > colnames(X) <- letters[1:ncol(X)] 653s > print(X) 653s a b c d e f 653s A -1.79170711 -0.98661383 1.18473009 0.35849440 -0.62986141 -1.78129233 653s B -0.74966407 0.61835556 -1.14936237 2.09780801 2.82184851 0.33953206 653s C -0.01972905 -0.29005237 -0.01187071 0.54560613 -1.03589739 0.98297478 653s D -0.59975070 -0.90658747 -0.10023441 1.25437572 -1.77766954 -1.18164394 653s E 0.45594086 1.65701876 0.79346232 1.45260402 -0.34231384 -0.34527291 653s F 0.74161609 0.15256554 0.41374124 -0.02239349 1.04059557 0.46515158 653s G 0.83520654 0.34048388 0.11010578 -0.04574982 0.30198086 -1.33863156 653s H -1.33051460 0.45029746 0.88578966 0.45991710 -0.94278795 1.24454097 653s I 1.81038841 1.27554324 2.51390545 0.92362613 -0.41104712 -0.94322193 653s J 0.12304333 -1.18665525 -0.80449805 -0.15461011 0.09633266 0.48620826 653s K -0.19939515 0.64767274 0.37370465 -0.05526828 -0.68363276 -0.05896629 653s L -0.99665453 0.06218061 2.21197397 0.30698212 -0.16132590 0.27135351 653s M -1.35424940 0.59640381 1.96442213 0.21422870 1.34095849 -0.96198140 653s N 0.13190974 -0.35817750 0.84870954 2.10113424 -0.57439134 -0.96478243 653s O -0.46078270 0.81546675 -0.69817306 -1.01513259 -0.76307035 -1.08110432 653s P -0.62263012 0.13920505 -0.89584990 0.07331917 1.52731309 -0.06998974 653s Q 0.27262772 -1.31930835 -0.63454277 0.75472877 -0.13568338 -0.65517690 653s R 0.09803998 -0.68620626 -1.28060339 -0.68060870 -0.58855704 -0.26218196 653s S 0.33559881 -1.12258955 -1.09285869 1.23047515 0.81317120 -0.04827536 653s T -0.78827179 0.43325860 0.14596932 1.23375671 -0.73262050 -0.41318859 653s > 653s > 653s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 653s > # Apply rowMeans() for 3 sets of 2 columns 653s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 653s > nbr_of_sets <- 3L 653s > S <- matrix(1:ncol(X), ncol = nbr_of_sets) 653s > colnames(S) <- sprintf("s%d", 1:nbr_of_sets) 653s > print(S) 653s s1 s2 s3 653s [1,] 1 3 5 653s [2,] 2 4 6 653s > 653s > Z <- rowAvgsPerColSet(X, S = S) 653s > print(Z) 653s s1 s2 s3 653s A -1.38916047 0.77161224 -1.20557687 653s B -0.06565425 0.47422282 1.58069029 653s C -0.15489071 0.26686771 -0.02646131 653s D -0.75316909 0.57707066 -1.47965674 653s E 1.05647981 1.12303317 -0.34379337 653s F 0.44709082 0.19567387 0.75287358 653s G 0.58784521 0.03217798 -0.51832535 653s H -0.44010857 0.67285338 0.15087651 653s I 1.54296582 1.71876579 -0.67713452 653s J -0.53180596 -0.47955408 0.29127046 653s K 0.22413880 0.15921819 -0.37129953 653s L -0.46723696 1.25947804 0.05501381 653s M -0.37892279 1.08932542 0.18948855 653s N -0.11313388 1.47492189 -0.76958689 653s O 0.17734202 -0.85665283 -0.92208734 653s P -0.24171254 -0.41126537 0.72866167 653s Q -0.52334031 0.06009300 -0.39543014 653s R -0.29408314 -0.98060605 -0.42536950 653s S -0.39349537 0.06880823 0.38244792 653s T -0.17750659 0.68986302 -0.57290454 653s > 653s > # Validation 653s > Z0 <- cbind(s1 = rowMeans(X[, 1:2]), s2 = rowMeans(X[, 3:4]), 653s + s3 = rowMeans(X[, 5:6])) 653s > stopifnot(identical(drop(Z), Z0)) 653s > 653s > 653s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 653s > # Apply colMeans() for 5 sets of 4 rows 653s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 653s > nbr_of_sets <- 5L 653s > S <- matrix(1:nrow(X), ncol = nbr_of_sets) 653s > colnames(S) <- sprintf("s%d", 1:nbr_of_sets) 653s > print(S) 653s s1 s2 s3 s4 s5 653s [1,] 1 5 9 13 17 653s [2,] 2 6 10 14 18 653s [3,] 3 7 11 15 19 653s [4,] 4 8 12 16 20 653s > 653s > Z <- colAvgsPerRowSet(X, S = S) 653s > print(Z) 653s a b c d e f 653s s1 -0.79021273 -0.3912245 -0.01918435 1.0640711 -0.15539496 -0.41010736 653s s2 0.17556222 0.6500914 0.55077475 0.4610945 0.01436866 0.00644702 653s s3 0.18434552 0.1996853 1.07377150 0.2551825 -0.28991828 -0.06115661 653s s4 -0.57643812 0.2982245 0.30477718 0.3433874 0.38270247 -0.76946447 653s s5 -0.02050132 -0.6737114 -0.71550888 0.6345880 -0.16092243 -0.34470570 653s > 653s > # Validation 653s > Z0 <- rbind(s1 = colMeans(X[1:4, ]), s2 = colMeans(X[5:8, ]), 653s + s3 = colMeans(X[9:12, ]), s4 = colMeans(X[13:16, ]), 653s + s5 = colMeans(X[17:20, ])) 653s > stopifnot(identical(drop(Z), Z0)) 653s > 653s > 653s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 653s > # When there is only one "complete" set 653s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 653s > nbr_of_sets <- 1L 653s > S <- matrix(1:ncol(X), ncol = nbr_of_sets) 653s > colnames(S) <- sprintf("s%d", 1:nbr_of_sets) 653s > print(S) 653s s1 653s [1,] 1 653s [2,] 2 653s [3,] 3 653s [4,] 4 653s [5,] 5 653s [6,] 6 653s > 653s > Z <- rowAvgsPerColSet(X, S = S, FUN = rowMeans) 653s > print(Z) 653s s1 653s A -0.607708366 653s B 0.663086284 653s C 0.028505232 653s D -0.551918389 653s E 0.611906536 653s F 0.465212756 653s G 0.033899279 653s H 0.127873773 653s I 0.861532364 653s J -0.240029859 653s K 0.004019153 653s L 0.282418297 653s M 0.299963722 653s N 0.197400374 653s O -0.533799381 653s P 0.025227924 653s Q -0.286225818 653s R -0.566686228 653s S 0.019253593 653s T -0.020182707 653s > 653s > Z0 <- rowMeans(X) 653s > stopifnot(identical(drop(Z), Z0)) 653s > 653s > 653s > nbr_of_sets <- 1L 653s > S <- matrix(1:nrow(X), ncol = nbr_of_sets) 653s > colnames(S) <- sprintf("s%d", 1:nbr_of_sets) 653s > print(S) 653s s1 653s [1,] 1 653s [2,] 2 653s [3,] 3 653s [4,] 4 653s [5,] 5 653s [6,] 6 653s [7,] 7 653s [8,] 8 653s [9,] 9 653s [10,] 10 653s [11,] 11 653s [12,] 12 653s [13,] 13 653s [14,] 14 653s [15,] 15 653s [16,] 16 653s [17,] 17 653s [18,] 18 653s [19,] 19 653s [20,] 20 653s > 653s > Z <- colAvgsPerRowSet(X, S = S, FUN = colMeans) 653s > print(Z) 653s a b c d e f 653s s1 -0.2054489 0.01661307 0.238926 0.5516647 -0.04183291 -0.3157974 653s > 653s > Z0 <- colMeans(X) 653s > stopifnot(identical(drop(Z), Z0)) 653s > 653s > 653s > 653s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 653s > # Use weights 653s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 653s > nbr_of_sets <- 3L 653s > S <- matrix(1:ncol(X), ncol = nbr_of_sets) 653s > colnames(S) <- sprintf("s%d", 1:nbr_of_sets) 653s > print(S) 653s s1 s2 s3 653s [1,] 1 3 5 653s [2,] 2 4 6 653s > 653s > W <- matrix(runif(length(X)), nrow = nrow(X), ncol = ncol(X)) 653s > Z1 <- rowAvgsPerColSet(X, W = W, S = S, FUN = rowWeightedMeans) 653s > print(Z1) 653s s1 s2 s3 653s A -1.38916047 0.77161224 -1.20557687 653s B -0.06565425 0.47422282 1.58069029 653s C -0.15489071 0.26686771 -0.02646131 653s D -0.75316909 0.57707066 -1.47965674 653s E 1.05647981 1.12303317 -0.34379337 653s F 0.44709082 0.19567387 0.75287358 653s G 0.58784521 0.03217798 -0.51832535 653s H -0.44010857 0.67285338 0.15087651 653s I 1.54296582 1.71876579 -0.67713452 653s J -0.53180596 -0.47955408 0.29127046 653s K 0.22413880 0.15921819 -0.37129953 653s L -0.46723696 1.25947804 0.05501381 653s M -0.37892279 1.08932542 0.18948855 653s N -0.11313388 1.47492189 -0.76958689 653s O 0.17734202 -0.85665283 -0.92208734 653s P -0.24171254 -0.41126537 0.72866167 653s Q -0.52334031 0.06009300 -0.39543014 653s R -0.29408314 -0.98060605 -0.42536950 653s S -0.39349537 0.06880823 0.38244792 653s T -0.17750659 0.68986302 -0.57290454 653s > Z2 <- colAvgsPerRowSet(X, W = W, S = S, FUN = colWeightedMeans) 653s > print(Z2) 653s a b c d e f 653s s1 -1.2706856 -0.1841291 0.01768386 1.2281512 1.0959936 -0.72088014 653s s2 -0.3097399 -0.5983199 -0.05605256 0.8999909 -1.4067835 -0.09933458 653s s3 0.5987785 0.9047921 0.60360178 0.7151053 0.3491409 0.05993934 653s > 653s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 653s > # Result should always be a matrix, including when nrow(X) <= 1 653s > # (https://github.com/HenrikBengtsson/matrixStats/issues/108) 653s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 653s > X <- matrix(1:3, nrow = 1L, ncol = 3L) 653s > S <- matrix(1, nrow = 1L, ncol = 1L) 653s > Z1 <- rowAvgsPerColSet(X, S = S) 653s > stopifnot(is.matrix(Z1)) 653s > Z2 <- rowAvgsPerColSet(X, S = S, rows = 0) 653s > stopifnot(is.matrix(Z2)) 653s > 653s > 653s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 653s > # Works with many, one or zero columns / rows 653s > # (https://github.com/HenrikBengtsson/matrixStats/issues/172) 653s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 653s > S <- cbind(1:2, 3:4, 5:6) 653s > X <- matrix(rnorm(2 * 6), nrow = 6, ncol = 2) 653s > Z2 <- colAvgsPerRowSet(X, S = S, FUN = colSums2) 653s > Z2_ref <- rbind(colSums2(X[S[,1], ,drop=FALSE]), 653s + colSums2(X[S[,2], ,drop=FALSE]), 653s + colSums2(X[S[,3], ,drop=FALSE])) 653s > stopifnot(identical(Z2, Z2_ref)) 653s > X <- matrix(rnorm(6), nrow = 6, ncol = 1) 653s > Z1 <- colAvgsPerRowSet(X, S = S, FUN = colSums2) 653s > Z1_ref <- rbind(colSums2(X[S[,1], ,drop=FALSE]), 653s + colSums2(X[S[,2], ,drop=FALSE]), 653s + colSums2(X[S[,3], ,drop=FALSE])) 653s > stopifnot(identical(Z1, Z1_ref)) 653s > X <- matrix(numeric(0), nrow = 6, ncol = 0) 653s > Z0 <- colAvgsPerRowSet(X, S = S, FUN = colSums2) 653s > Z0_ref <- matrix(numeric(0), nrow = ncol(S), ncol = 0) 653s > stopifnot(identical(Z0, unname(Z0_ref))) 653s > 653s > 653s > S <- rbind(1:4, 5:8) 653s > X <- matrix(rnorm(n = 2 * 8), nrow = 2, ncol = 8) 653s > Z2 <- rowAvgsPerColSet(X, S = S, FUN = rowMeans2) 653s > Z2_ref <- cbind(rowMeans2(X[,S[,1],drop=FALSE]), 653s + rowMeans2(X[,S[,2],drop=FALSE]), 653s + rowMeans2(X[,S[,3],drop=FALSE]), 653s + rowMeans2(X[,S[,4],drop=FALSE])) 653s > stopifnot(identical(Z2, Z2_ref)) 653s > X <- matrix(rnorm(n = 8), nrow = 1, ncol = 8) 653s > Z1 <- rowAvgsPerColSet(X, S = S, FUN = rowMeans2) 653s > Z1_ref <- cbind(rowMeans2(X[,S[,1],drop=FALSE]), 653s + rowMeans2(X[,S[,2],drop=FALSE]), 653s + rowMeans2(X[,S[,3],drop=FALSE]), 653s + rowMeans2(X[,S[,4],drop=FALSE])) 653s > stopifnot(identical(Z1, Z1_ref)) 653s > X <- matrix(numeric(0), nrow = 0, ncol = 8) 653s > Z0 <- rowAvgsPerColSet(X, S = S, FUN = rowMeans2) 653s > Z0_ref <- matrix(numeric(0), nrow = 0, ncol = ncol(S)) 653s > stopifnot(identical(Z0, Z0_ref)) 653s > 653s 653s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 653s Copyright (C) 2024 The R Foundation for Statistical Computing 653s Platform: arm-unknown-linux-gnueabihf (32-bit) 653s 653s R is free software and comes with ABSOLUTELY NO WARRANTY. 653s You are welcome to redistribute it under certain conditions. 653s Type 'license()' or 'licence()' for distribution details. 653s 653s R is a collaborative project with many contributors. 653s Type 'contributors()' for more information and 653s 'citation()' on how to cite R or R packages in publications. 653s 653s Type 'demo()' for some demos, 'help()' for on-line help, or 653s 'help.start()' for an HTML browser interface to help. 653s Type 'q()' to quit R. 653s 653s > library("matrixStats") 653s > 653s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 653s > # Subsetted tests 653s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 653s > source("utils/validateIndicesFramework.R") 653s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 653s > #W <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 653s > for (rows in index_cases) { 653s + for (cols in index_cases) { 653s + if (is.null(rows)) { 653s + rows <- seq_len(nrow(x)) 653s + rows_finite <- rows 653s + } else { 653s + rows_finite <- rows[is.finite(rows)] 653s + } 653s + 653s + if (is.null(cols)) { 653s + cols <- seq_len(ncol(x)) 653s + cols_finite <- cols 653s + } else { 653s + cols_finite <- cols[is.finite(cols)] 653s + } 653s + 653s + suppressWarnings({ 653s + actual <- tryCatch({ 653s + rowAvgsPerColSet(x, rows = rows, S = matrix(cols, ncol = 1), 653s + FUN = rowMeans) 653s + }, error = function(c) "error") 653s + expect <- tryCatch({ 653s + rowMeans(x[rows, cols_finite, drop = FALSE], na.rm = TRUE) 653s + }, error = function(c) "error") 653s + }) 653s + stopifnot(all.equal(as.vector(actual), expect)) 653s + 653s + suppressWarnings({ 653s + actual <- tryCatch({ 653s + colAvgsPerRowSet(x, cols = cols, S = matrix(rows, ncol = 1), 653s + FUN = colMeans) 653s + }, error = function(c) "error") 653s + expect <- tryCatch({ 653s + colMeans(x[rows_finite, cols, drop = FALSE], na.rm = TRUE) 653s + }, error = function(c) "error") 653s + }) 653s + stopifnot(all.equal(as.vector(actual), expect)) 653s + } 653s + } 654s > 654s 654s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 654s Copyright (C) 2024 The R Foundation for Statistical Computing 654s Platform: arm-unknown-linux-gnueabihf (32-bit) 654s 654s R is free software and comes with ABSOLUTELY NO WARRANTY. 654s You are welcome to redistribute it under certain conditions. 654s Type 'license()' or 'licence()' for distribution details. 654s 654s R is a collaborative project with many contributors. 654s Type 'contributors()' for more information and 654s 'citation()' on how to cite R or R packages in publications. 654s 654s Type 'demo()' for some demos, 'help()' for on-line help, or 654s 'help.start()' for an HTML browser interface to help. 654s Type 'q()' to quit R. 654s 654s > library("matrixStats") 654s > 654s > x <- matrix(1:27, ncol = 3) 654s > 654s > # To check names attribute 654s > dimnames <- list(letters[1:9], LETTERS[1:3]) 654s > 654s > rowCollapse_R <- function(x, idxs, ..., useNames = NA) { 654s + res <- x[, idxs] 654s + # Preserve names attribute? 654s + if (is.na(useNames) || !useNames) names(res) <- NULL 654s + res 654s + } 654s > 654s > idxs <- 1L 654s > # Test with and without dimnames on x 654s > for (setDimnames in c(TRUE, FALSE)) { 654s + if (setDimnames) dimnames(x) <- dimnames 654s + else dimnames(x) <- NULL 654s + # Check names attribute 654s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 654s + y_truth <- rowCollapse_R(x, idxs, useNames = useNames) 654s + y <- rowCollapse(x, idxs, useNames = useNames) 654s + stopifnot(identical(y, y_truth)) 654s + y2 <- colCollapse(t(x), idxs, useNames = useNames) 654s + stopifnot(identical(y2, y)) 654s + } 654s + } 654s > 654s > idxs <- 2L 654s > # Test with and without dimnames on x 654s > for (setDimnames in c(TRUE, FALSE)) { 654s + if (setDimnames) dimnames(x) <- dimnames 654s + else dimnames(x) <- NULL 654s + # Check names attribute 654s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 654s + y_truth <- rowCollapse_R(x, idxs, useNames = useNames) 654s + y <- rowCollapse(x, idxs, useNames = useNames) 654s + stopifnot(identical(y, y_truth)) 654s + y2 <- colCollapse(t(x), idxs, useNames = useNames) 654s + stopifnot(identical(y2, y)) 654s + } 654s + } 654s > 654s > 654s > rowCollapse_R <- function(x, idxs, ..., useNames = NA) { 654s + res <- c(x[1:5, 1], x[6:9, 3]) 654s + # Preserve names attribute? 654s + if (is.na(useNames) || !useNames) names(res) <- NULL 654s + res 654s + } 654s > 654s > idxs <- c(1, 1, 1, 1, 1, 3, 3, 3, 3) 654s > # Test with and without dimnames on x 654s > for (setDimnames in c(TRUE, FALSE)) { 654s + if (setDimnames) dimnames(x) <- dimnames 654s + else dimnames(x) <- NULL 654s + # Check names attribute 654s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 654s + y_truth <- rowCollapse_R(x, idxs, useNames = useNames) 654s + y <- rowCollapse(x, idxs, useNames = useNames) 654s + stopifnot(identical(y, y_truth)) 654s + y2 <- colCollapse(t(x), idxs, useNames = useNames) 654s + stopifnot(identical(y2, y)) 654s + } 654s + } 654s > 654s > 654s > rowCollapse_R <- function(x, idxs, ..., useNames = NA) { 654s + res <- c(x[1, 1], x[2, 2], x[3, 3], x[4, 1], x[5, 2], 654s + x[6, 3], x[7, 1], x[8, 2], x[9, 3]) 654s + # Preserve names attribute? 654s + if (isTRUE(useNames)) { 654s + names <- rownames(x) 654s + if (!is.null(names)) names(res) <- names 654s + } 654s + res 654s + } 654s > 654s > idxs <- 1:3 654s > # Test with and without dimnames on x 654s > for (setDimnames in c(TRUE, FALSE)) { 654s + if (setDimnames) dimnames(x) <- dimnames 654s + else dimnames(x) <- NULL 654s + # Check names attribute 654s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 654s + y_truth <- rowCollapse_R(x, idxs, useNames = useNames) 654s + y <- rowCollapse(x, idxs, useNames = useNames) 654s + stopifnot(identical(y, y_truth)) 654s + y2 <- colCollapse(t(x), idxs, useNames = useNames) 654s + stopifnot(identical(y2, y)) 654s + } 654s + } 654s > 654s 654s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 654s Copyright (C) 2024 The R Foundation for Statistical Computing 654s Platform: arm-unknown-linux-gnueabihf (32-bit) 654s 654s R is free software and comes with ABSOLUTELY NO WARRANTY. 654s You are welcome to redistribute it under certain conditions. 654s Type 'license()' or 'licence()' for distribution details. 654s 654s R is a collaborative project with many contributors. 654s Type 'contributors()' for more information and 654s 'citation()' on how to cite R or R packages in publications. 654s 654s Type 'demo()' for some demos, 'help()' for on-line help, or 654s 'help.start()' for an HTML browser interface to help. 654s Type 'q()' to quit R. 654s 655s > library("matrixStats") 655s > 655s > rowCollapse_R <- function(x, idxs, ..., useNames = NA) { 655s + ans <- c() 655s + storage.mode(ans) <- storage.mode(x) 655s + for (ii in seq_len(length(idxs))) { 655s + ans[ii] <- x[ii, idxs[ii]] 655s + } 655s + 655s + # Preserve names attribute 655s + if (isTRUE(useNames)) { 655s + names <- rownames(x) 655s + if (!is.null(names)) names(ans) <- names 655s + } 655s + 655s + ans 655s + } 655s > 655s > 655s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 655s > # Subsetted tests 655s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 655s > source("utils/validateIndicesFramework.R") 655s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 655s > storage.mode(x) <- "integer" 655s > 655s > # To check names attribute 655s > dimnames <- list(letters[1:6], LETTERS[1:6]) 655s > 655s > for (rows in index_cases) { 655s + if (is.null(rows)) rows <- seq_len(nrow(x)) 655s + 655s + for (idxs in list(2L, seq_len(6L))) { 655s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 655s + suppressWarnings({ 655s + actual <- tryCatch(rowCollapse(x, idxs, rows = rows, useNames = useNames), 655s + error = function(c) "error") 655s + expect <- tryCatch({ 655s + idxs_0 <- rep(idxs, length.out = nrow(x))[rows] 655s + rowCollapse_R(x[rows, , drop = FALSE], idxs_0, useNames = useNames) 655s + }, error = function(c) "error") 655s + }) 655s + stopifnot(all.equal(actual, expect)) 655s + 655s + suppressWarnings({ 655s + actual <- tryCatch(colCollapse(t(x), idxs, cols = rows, useNames = useNames), 655s + error = function(c) "error") 655s + }) 655s + stopifnot(all.equal(actual, expect)) 655s + 655s + # Check names attribute 655s + dimnames(x) <- dimnames 655s + suppressWarnings({ 655s + actual <- tryCatch(rowCollapse(x, idxs, rows = rows, useNames = useNames), 655s + error = function(c) "error") 655s + expect <- tryCatch({ 655s + idxs_0 <- rep(idxs, length.out = nrow(x))[rows] 655s + rowCollapse_R(x[rows, , drop = FALSE], idxs_0, useNames = useNames) 655s + }, error = function(c) "error") 655s + }) 655s + stopifnot(all.equal(actual, expect)) 655s + 655s + suppressWarnings({ 655s + actual <- tryCatch(colCollapse(t(x), idxs, cols = rows, useNames = useNames), 655s + error = function(c) "error") 655s + }) 655s + stopifnot(all.equal(actual, expect)) 655s + 655s + dimnames(x) <- NULL 655s + } 655s + } 655s + } 655s > 655s 655s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 655s Copyright (C) 2024 The R Foundation for Statistical Computing 655s Platform: arm-unknown-linux-gnueabihf (32-bit) 655s 655s R is free software and comes with ABSOLUTELY NO WARRANTY. 655s You are welcome to redistribute it under certain conditions. 655s Type 'license()' or 'licence()' for distribution details. 655s 655s R is a collaborative project with many contributors. 655s Type 'contributors()' for more information and 655s 'citation()' on how to cite R or R packages in publications. 655s 655s Type 'demo()' for some demos, 'help()' for on-line help, or 655s 'help.start()' for an HTML browser interface to help. 655s Type 'q()' to quit R. 655s 655s > library("matrixStats") 655s > 655s > rowCounts_R <- function(x, value = TRUE, na.rm = FALSE, ...) { 655s + if (is.na(value)) { 655s + counts <- apply(x, MARGIN = 1L, FUN = function(x) 655s + sum(is.na(x)) 655s + ) 655s + } else { 655s + counts <- apply(x, MARGIN = 1L, FUN = function(x) 655s + sum(x == value, na.rm = na.rm) 655s + ) 655s + } 655s + # Preserve names attribute 655s + names <- names(counts) 655s + counts <- as.integer(counts) 655s + if (isTRUE(useNames) && !is.null(names)) names(counts) <- names 655s + counts 655s + } 655s > 655s > 655s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 655s > # Data type: integer and numeric 655s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 655s > for (mode in c("integer", "double")) { 655s + x <- matrix(runif(10 * 5, min = -3, max = 3), nrow = 10L, ncol = 5L) 655s + x[sample.int(length(x), size = 7L)] <- 0 655s + storage.mode(x) <- mode 655s + 655s + dimnames = list(letters[1:10], LETTERS[1:5]) 655s + 655s + # Test with and without dimnames on x 655s + for (setDimnames in c(TRUE, FALSE)) { 655s + if (setDimnames) dimnames(x) <- dimnames 655s + else dimnames(x) <- NULL 655s + for (na.rm in c(FALSE, TRUE)) { 655s + # Check names attribute 655s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 655s + # Count zeros 655s + r0 <- rowCounts_R(x, value = 0, na.rm = na.rm, useNames = useNames) 655s + r1 <- rowCounts(x, value = 0, na.rm = na.rm, useNames = useNames) 655s + r2 <- colCounts(t(x), value = 0, na.rm = na.rm, useNames = useNames) 655s + stopifnot(identical(r1, r0)) 655s + stopifnot(identical(r2, r0)) 655s + 655s + # Count NAs 655s + r0 <- rowCounts_R(x, value = NA, na.rm = na.rm, useNames = useNames) 655s + r1 <- rowCounts(x, value = NA, na.rm = na.rm, useNames = useNames) 655s + r2 <- colCounts(t(x), value = NA, na.rm = na.rm, useNames = useNames) 655s + stopifnot(identical(r1, r0)) 655s + stopifnot(identical(r2, r0)) 655s + 655s + if (mode == "integer") { 655s + ux <- unique(as.vector(x)) 655s + r0 <- r1 <- r2 <- integer(nrow(x)) 655s + for (value in ux) { 655s + r0 <- r0 + rowCounts_R(x, value = value, na.rm = na.rm, useNames = useNames) 655s + r1 <- r1 + rowCounts(x, value = value, na.rm = na.rm, useNames = useNames) 655s + r2 <- r2 + colCounts(t(x), value = value, na.rm = na.rm, useNames = useNames) 655s + stopifnot(identical(r1, r0)) 655s + stopifnot(identical(r2, r0)) 655s + } 655s + stopifnot(all(r0 == ncol(x))) 655s + } # if (mode == "integer") 655s + } # for (useNames ...) 655s + } # for (na.rm ...) 655s + } # for (setDimnames ...) 655s + } # for (mode ...) 656s > 656s > 656s > # All NAs 656s > na_list <- list(NA_integer_, NA_real_, NaN) 656s > for (na_value in na_list) { 656s + x <- matrix(na_value, nrow = 10L, ncol = 5L) 656s + # Test with and without dimnames on x 656s + for (setDimnames in c(TRUE, FALSE)) { 656s + if (setDimnames) dimnames(x) <- dimnames 656s + else dimnames(x) <- NULL 656s + for (na.rm in c(FALSE, TRUE)) { 656s + # Check names attribute 656s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 656s + r0 <- rowCounts_R(x, na.rm = na.rm, useNames = useNames) 656s + r1 <- rowCounts(x, na.rm = na.rm, useNames = useNames) 656s + r2 <- colCounts(t(x), na.rm = na.rm, useNames = useNames) 656s + stopifnot(identical(r1, r0)) 656s + stopifnot(identical(r2, r0)) 656s + 656s + # Count NAs 656s + r0 <- rowCounts_R(x, value = NA, na.rm = na.rm, useNames = useNames) 656s + r1 <- rowCounts(x, value = NA, na.rm = na.rm, useNames = useNames) 656s + r2 <- colCounts(t(x), value = NA, na.rm = na.rm, useNames = useNames) 656s + stopifnot(all(r0 == ncol(x))) 656s + stopifnot(identical(r1, r0)) 656s + stopifnot(identical(r2, r0)) 656s + } 656s + } 656s + } 656s + } # for (na_value ...) 656s > 656s > 656s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 656s > # Data type: logical 656s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 656s > x <- matrix(FALSE, nrow = 10L, ncol = 4L) 656s > x[7:8, 2:3] <- TRUE 656s > x[1:3, ] <- TRUE 656s > x[, 1] <- TRUE 656s > x[4, ] <- FALSE 656s > x[, 4] <- FALSE 656s > x[2, ] <- FALSE 656s > x[3, ] <- TRUE 656s > 656s > # To check names attribute 656s > dimnames <- list(letters[1:10], LETTERS[1:4]) 656s > 656s > # Test with and without dimnames on x 656s > for (setDimnames in c(TRUE, FALSE)) { 656s + if (setDimnames) dimnames(x) <- dimnames 656s + else dimnames(x) <- NULL 656s + # Row/column counts 656s + for (na.rm in c(FALSE, TRUE)) { 656s + # Check names attribute 656s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 656s + r0 <- rowCounts_R(x, na.rm = na.rm, useNames = useNames) 656s + r1 <- rowCounts(x, na.rm = na.rm, useNames = useNames) 656s + r2 <- colCounts(t(x), na.rm = na.rm, useNames = useNames) 656s + stopifnot(identical(r1, r0)) 656s + stopifnot(identical(r2, r0)) 656s + 656s + r_true <- rowCounts(x, value = TRUE, na.rm = na.rm, useNames = useNames) 656s + r_false <- rowCounts(x, value = FALSE, na.rm = na.rm, useNames = useNames) 656s + stopifnot(r_true + r_false == ncol(x)) 656s + 656s + c_true <- colCounts(x, value = TRUE, na.rm = na.rm, useNames = useNames) 656s + c_false <- colCounts(x, value = FALSE, na.rm = na.rm, useNames = useNames) 656s + stopifnot(c_true + c_false == nrow(x)) 656s + 656s + # Count NAs 656s + r0 <- rowCounts_R(x, value = NA, na.rm = na.rm, useNames = useNames) 656s + r1 <- rowCounts(x, value = NA, na.rm = na.rm, useNames = useNames) 656s + r2 <- colCounts(t(x), value = NA, na.rm = na.rm, useNames = useNames) 656s + stopifnot(identical(r1, r0)) 656s + stopifnot(identical(r2, r0)) 656s + } 656s + } 656s + } 656s > 656s > 656s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 656s > # Data type: character (not sure if this should be supported) 656s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 656s > x <- matrix(rep(letters, length.out = 10 * 5), nrow = 10L, ncol = 5L) 656s > x[2:3, 3:4] <- NA_character_ 656s > 656s > # Row/column counts 656s > for (na.rm in c(FALSE, TRUE)) { 656s + for (value in c("g", NA_character_)) { 656s + r0 <- rowCounts_R(x, value = value, na.rm = na.rm) 656s + r1 <- rowCounts(x, value = value, na.rm = na.rm) 656s + r2 <- colCounts(t(x), value = value, na.rm = na.rm) 656s + stopifnot(identical(r1, r0)) 656s + stopifnot(identical(r2, r0)) 656s + 656s + c <- count(x[1, ], value = value, na.rm = na.rm) 656s + stopifnot(identical(c, r1[1])) 656s + 656s + c <- count(x[2, ], value = value, na.rm = na.rm) 656s + stopifnot(identical(c, r1[2])) 656s + } 656s + } 656s > 656s > # NA row 656s > x <- matrix(0, nrow = 2L, ncol = 2L) 656s > x[1, ] <- NA_integer_ 656s > 656s > dimnames <- list(letters[1:2], LETTERS[1:2]) 656s > 656s > # Test with and without dimnames on x 656s > for (setDimnames in c(TRUE, FALSE)) { 656s + if (setDimnames) dimnames(x) <- dimnames 656s + else dimnames(x) <- NULL 656s + # Check names attribute 656s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 656s + r0 <- rowCounts(x, value = 0, useNames = useNames) 656s + r1 <- rowCounts_R(x, value = 0, useNames = useNames) 656s + stopifnot(identical(r0, r1)) 656s + } 656s + } 656s > 656s 656s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 656s Copyright (C) 2024 The R Foundation for Statistical Computing 656s Platform: arm-unknown-linux-gnueabihf (32-bit) 656s 656s R is free software and comes with ABSOLUTELY NO WARRANTY. 656s You are welcome to redistribute it under certain conditions. 656s Type 'license()' or 'licence()' for distribution details. 656s 656s R is a collaborative project with many contributors. 656s Type 'contributors()' for more information and 656s 'citation()' on how to cite R or R packages in publications. 656s 656s Type 'demo()' for some demos, 'help()' for on-line help, or 656s 'help.start()' for an HTML browser interface to help. 656s Type 'q()' to quit R. 656s 656s > library("matrixStats") 656s > 656s > rowCounts_R <- function(x, value = TRUE, na.rm = FALSE, ..., useNames = NA) { 656s + if (is.na(value)) { 656s + counts <- apply(x, MARGIN = 1L, FUN = function(x) 656s + sum(is.na(x)) 656s + ) 656s + } else { 656s + counts <- apply(x, MARGIN = 1L, FUN = function(x) 656s + sum(x == value, na.rm = na.rm) 656s + ) 656s + } 656s + # Preserve names attribute 656s + names <- names(counts) 656s + counts <- as.integer(counts) 656s + if (isTRUE(useNames) && !is.null(names)) names(counts) <- names 656s + counts 656s + } # rowCounts_R() 656s > 656s > 656s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 656s > # Subsetted tests 656s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 656s > source("utils/validateIndicesFramework.R") 656s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 656s > x[2:3, 3:4] <- NA_real_ 656s > storage.mode(x) <- "integer" 656s > 656s > # To check names attribute 656s > dimnames <- list(letters[1:6], LETTERS[1:6]) 656s > 656s > # Test with and without dimnames on x 656s > for (setDimnames in c(TRUE, FALSE)) { 656s + if (setDimnames) dimnames(x) <- dimnames 656s + else dimnames(x) <- NULL 656s + for (rows in index_cases) { 656s + for (cols in index_cases) { 656s + # Check names attribute 656s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 656s + validateIndicesTestMatrix(x, rows, cols, 656s + ftest = rowCounts, fsure = rowCounts_R, 656s + value = 0, na.rm = TRUE, useNames = useNames) 656s + validateIndicesTestMatrix(x, rows, cols, 656s + fcoltest = colCounts, fsure = rowCounts_R, 656s + value = 0, na.rm = TRUE, useNames = useNames) 656s + for (value in c(0, NA_integer_)) { 656s + validateIndicesTestMatrix(x, rows, cols, 656s + ftest = rowCounts, fsure = rowCounts_R, 656s + value = value, useNames = useNames) 656s + validateIndicesTestMatrix(x, rows, cols, 656s + fcoltest = colCounts, fsure = rowCounts_R, 656s + value = value, useNames = useNames) 656s + } 656s + } 656s + } 656s + } 656s + } 661s > 661s > x <- matrix(rep(letters, length.out = 6 * 6), nrow = 6, ncol = 6) 661s > x[2:3, 3:4] <- NA_character_ 661s > # Test with and without dimnames on x 661s > for (setDimnames in c(TRUE, FALSE)) { 661s + if (setDimnames) dimnames(x) <- dimnames 661s + else dimnames(x) <- NULL 661s + 661s + count <- 0L 661s + for (rows in index_cases) { 661s + for (cols in index_cases) { 661s + count <- count + 1L 661s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 661s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 661s + useNames <- useNames[count %% length(useNames) + 1] 661s + 661s + validateIndicesTestMatrix(x, rows, cols, 661s + ftest = rowCounts, fsure = rowCounts_R, 661s + value = "g", na.rm = TRUE, useNames = useNames) 661s + validateIndicesTestMatrix(x, rows, cols, 661s + fcoltest = colCounts, fsure = rowCounts_R, 661s + value = "g", na.rm = TRUE, useNames = useNames) 661s + for (value in c("g", NA_character_)) { 661s + validateIndicesTestMatrix(x, rows, cols, 661s + ftest = rowCounts, fsure = rowCounts_R, 661s + value = value, useNames = useNames) 661s + validateIndicesTestMatrix(x, rows, cols, 661s + fcoltest = colCounts, fsure = rowCounts_R, 661s + value = value, useNames = useNames) 661s + } 661s + } 661s + } 661s + } 664s > 664s 664s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 664s Copyright (C) 2024 The R Foundation for Statistical Computing 664s Platform: arm-unknown-linux-gnueabihf (32-bit) 664s 664s R is free software and comes with ABSOLUTELY NO WARRANTY. 664s You are welcome to redistribute it under certain conditions. 664s Type 'license()' or 'licence()' for distribution details. 664s 664s R is a collaborative project with many contributors. 664s Type 'contributors()' for more information and 664s 'citation()' on how to cite R or R packages in publications. 664s 664s Type 'demo()' for some demos, 'help()' for on-line help, or 664s 'help.start()' for an HTML browser interface to help. 664s Type 'q()' to quit R. 664s 664s > library("matrixStats") 664s > 664s > rowCummins_R <- function(x, ..., useNames = NA) { 664s + suppressWarnings({ 664s + y <- t(apply(x, MARGIN = 1L, FUN = cummin)) 664s + }) 664s + 664s + # Preserve dimnames attribute? 664s + dim(y) <- dim(x) 664s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 664s + y 664s + } 664s > 664s > rowCummaxs_R <- function(x, ..., useNames = NA) { 664s + mode <- storage.mode(x) 664s + # Change mode because a bug is detected on cummax for integer in R-3.2.0 664s + storage.mode(x) <- "numeric" 664s + suppressWarnings({ 664s + y <- t(apply(x, MARGIN = 1L, FUN = cummax)) 664s + }) 664s + 664s + # Preserve dimnames attribute? 664s + dim(y) <- dim(x) 664s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 664s + 664s + y 664s + } 664s > 664s > 664s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 664s > # With and without some NAs 664s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 664s > for (mode in c("logical", "integer", "double")) { 664s + for (add_na in c(FALSE, TRUE)) { 664s + cat("add_na = ", add_na, "\n", sep = "") 664s + 664s + x <- matrix(1:50, nrow = 10L, ncol = 5L) 664s + diag(x) <- 0 664s + if (add_na) { 664s + x[3:7, c(2, 4)] <- NA_real_ 664s + } 664s + cat("mode: ", mode, "\n", sep = "") 664s + storage.mode(x) <- mode 664s + str(x) 664s + 664s + # To check dimnames attribute 664s + dimnames <- list(letters[1:10], LETTERS[1:5]) 664s + 664s + # Test with and without dimnames on x 664s + for (setDimnames in c(TRUE, FALSE)) { 664s + if (setDimnames) dimnames(x) <- dimnames 664s + else dimnames(x) <- NULL 664s + # Check names attribute 664s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 664s + # Row/column ranges 664s + r0 <- rowCummins_R(x, useNames = useNames) 664s + r1 <- rowCummins(x, useNames = useNames) 664s + r2 <- t(colCummins(t(x), useNames = useNames)) 664s + stopifnot(all.equal(r1, r2)) 664s + stopifnot(all.equal(r1, r0)) 664s + stopifnot(all.equal(r2, r0)) 664s + 664s + r0 <- rowCummaxs_R(x, useNames = useNames) 664s + r1 <- rowCummaxs(x, useNames = useNames) 664s + r2 <- t(colCummaxs(t(x), useNames = useNames)) 664s + stopifnot(all.equal(r1, r2)) 664s + stopifnot(all.equal(r1, r0)) 664s + stopifnot(all.equal(r2, r0)) 664s + } # for (useNames ...) 664s + } # for (setDimnames ...) 664s + } # for (add_na ...) 664s + } # for (mode ...) 664s add_na = FALSE 664s mode: logical 664s logi [1:10, 1:5] FALSE TRUE TRUE TRUE TRUE TRUE ... 664s add_na = TRUE 664s mode: logical 664s logi [1:10, 1:5] FALSE TRUE TRUE TRUE TRUE TRUE ... 664s add_na = FALSE 664s mode: integer 664s int [1:10, 1:5] 0 2 3 4 5 6 7 8 9 10 ... 664s add_na = TRUE 664s mode: integer 664s int [1:10, 1:5] 0 2 3 4 5 6 7 8 9 10 ... 664s add_na = FALSE 664s mode: double 664s num [1:10, 1:5] 0 2 3 4 5 6 7 8 9 10 ... 664s add_na = TRUE 664s mode: double 664s num [1:10, 1:5] 0 2 3 4 5 6 7 8 9 10 ... 664s > 664s > 664s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 664s > # All NAs 664s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 664s > for (mode in c("logical", "integer", "double")) { 664s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 664s + cat("mode: ", mode, "\n", sep = "") 664s + storage.mode(x) <- mode 664s + str(x) 664s + 664s + # Test with and without dimnames on x 664s + for (setDimnames in c(TRUE, FALSE)) { 664s + if (setDimnames) dimnames(x) <- dimnames 664s + else dimnames(x) <- NULL 664s + # Check names attribute 664s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 664s + r0 <- rowCummins_R(x, useNames = useNames) 664s + r1 <- rowCummins(x, useNames = useNames) 664s + r2 <- t(colCummins(t(x), useNames = useNames)) 664s + stopifnot(all.equal(r1, r2)) 664s + stopifnot(all.equal(r1, r0)) 664s + stopifnot(all.equal(r2, r0)) 664s + 664s + r0 <- rowCummaxs_R(x, useNames = useNames) 664s + r1 <- rowCummaxs(x, useNames = useNames) 664s + r2 <- t(colCummaxs(t(x), useNames = useNames)) 664s + stopifnot(all.equal(r1, r2)) 664s + stopifnot(all.equal(r1, r0)) 664s + stopifnot(all.equal(r2, r0)) 664s + } # for (useNames ...) 664s + } # for (setDimnames ...) 664s + } # for (mode ...) 664s mode: logical 664s logi [1:10, 1:5] NA NA NA NA NA NA ... 664s mode: integer 664s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 665s mode: double 665s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 665s > 665s > 665s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 665s > # A 1x1 matrix 665s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 665s > for (mode in c("logical", "integer", "double")) { 665s + x <- matrix(0, nrow = 1L, ncol = 1L) 665s + cat("mode: ", mode, "\n", sep = "") 665s + storage.mode(x) <- mode 665s + str(x) 665s + 665s + # To check dimnames attribute 665s + dimnames <- list("a", "A") 665s + 665s + # Test with and without dimnames on x 665s + for (setDimnames in c(TRUE, FALSE)) { 665s + if (setDimnames) dimnames(x) <- dimnames 665s + else dimnames(x) <- NULL 665s + # Check names attribute 665s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 665s + r0 <- rowCummins_R(x, useNames = useNames) 665s + r1 <- rowCummins(x, useNames = useNames) 665s + r2 <- t(colCummins(t(x), useNames = useNames)) 665s + stopifnot(all.equal(r1, r2)) 665s + stopifnot(all.equal(r1, r0)) 665s + stopifnot(all.equal(r2, r0)) 665s + 665s + r0 <- rowCummaxs_R(x, useNames = useNames) 665s + r1 <- rowCummaxs(x, useNames = useNames) 665s + r2 <- t(colCummaxs(t(x), useNames = useNames)) 665s + stopifnot(all.equal(r1, r2)) 665s + stopifnot(all.equal(r1, r0)) 665s + stopifnot(all.equal(r2, r0)) 665s + } # for (useNames ...) 665s + } # for (setDimnames ...) 665s + } # for (mode ...) 665s mode: logical 665s logi [1, 1] FALSE 665s mode: integer 665s int [1, 1] 0 665s mode: double 665s num [1, 1] 0 665s > 665s > 665s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 665s > # Corner cases 665s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 665s > for (mode in c("logical", "integer", "double")) { 665s + cat("mode: ", mode, "\n", sep = "") 665s + value <- 0 665s + storage.mode(value) <- mode 665s + value0 <- if (mode == "logical") 0L else value 665s + 665s + # A 0x0 matrix 665s + x <- matrix(value, nrow = 0L, ncol = 0L) 665s + str(x) 665s + r0 <- matrix(value0, nrow = nrow(x), ncol = ncol(x)) 665s + r1 <- rowCummins(x) 665s + r2 <- t(colCummins(t(x))) 665s + stopifnot(all.equal(r1, r2)) 665s + stopifnot(all.equal(r1, r0)) 665s + stopifnot(all.equal(r2, r0)) 665s + 665s + # A 0xK matrix 665s + x <- matrix(value, nrow = 0L, ncol = 5L) 665s + str(x) 665s + colnames <- LETTERS[1:5] 665s + # Test with and without dimnames on x 665s + for (setDimnames in c(TRUE, FALSE)) { 665s + if (setDimnames) colnames(x) <- colnames 665s + else dimnames(x) <- NULL 665s + # Check names attribute 665s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 665s + r0 <- rowCummins_R(x, useNames = useNames) 665s + r1 <- rowCummins(x, useNames = useNames) 665s + r2 <- t(colCummins(t(x), useNames = useNames)) 665s + stopifnot(all.equal(r1, r2)) 665s + stopifnot(all.equal(r1, r0)) 665s + stopifnot(all.equal(r2, r0)) 665s + r0 <- rowCummaxs_R(x, useNames = useNames) 665s + r1 <- rowCummaxs(x, useNames = useNames) 665s + r2 <- t(colCummaxs(t(x), useNames = useNames)) 665s + stopifnot(all.equal(r1, r2)) 665s + stopifnot(all.equal(r1, r0)) 665s + stopifnot(all.equal(r2, r0)) 665s + } # for (useNames ...) 665s + } # for (setDimnames ...) 665s + 665s + # A Nx0 matrix 665s + x <- matrix(value, nrow = 5L, ncol = 0L) 665s + str(x) 665s + rownames <- LETTERS[1:5] 665s + # Test with and without dimnames on x 665s + for (setDimnames in c(TRUE, FALSE)) { 665s + if (setDimnames) rownames(x) <- rownames 665s + else dimnames(x) <- NULL 665s + # Check names attribute 665s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 665s + r0 <- rowCummins_R(x, useNames = useNames) 665s + r1 <- rowCummins(x, useNames = useNames) 665s + r2 <- t(colCummins(t(x), useNames = useNames)) 665s + stopifnot(all.equal(r1, r2)) 665s + stopifnot(all.equal(r1, r0)) 665s + stopifnot(all.equal(r2, r0)) 665s + 665s + r0 <- rowCummaxs_R(x, useNames = useNames) 665s + r1 <- rowCummaxs(x, useNames = useNames) 665s + r2 <- t(colCummaxs(t(x), useNames = useNames)) 665s + stopifnot(all.equal(r1, r2)) 665s + stopifnot(all.equal(r1, r0)) 665s + stopifnot(all.equal(r2, r0)) 665s + } # for (useNames ...) 665s + } # for (setDimnames ...) 665s + } # for (mode ...) 665s mode: logical 665s logi[0 , 0 ] 665s logi[0 , 1:5] 665s logi[1:5, 0 ] 665s mode: integer 665s int[0 , 0 ] 665s int[0 , 1:5] 665s int[1:5, 0 ] 665s mode: double 665s num[0 , 0 ] 665s num[0 , 1:5] 665s num[1:5, 0 ] 665s > 665s 665s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 665s Copyright (C) 2024 The R Foundation for Statistical Computing 665s Platform: arm-unknown-linux-gnueabihf (32-bit) 665s 665s R is free software and comes with ABSOLUTELY NO WARRANTY. 665s You are welcome to redistribute it under certain conditions. 665s Type 'license()' or 'licence()' for distribution details. 665s 665s R is a collaborative project with many contributors. 665s Type 'contributors()' for more information and 665s 'citation()' on how to cite R or R packages in publications. 665s 665s Type 'demo()' for some demos, 'help()' for on-line help, or 665s 'help.start()' for an HTML browser interface to help. 665s Type 'q()' to quit R. 665s 665s > library("matrixStats") 665s > 665s > rowCummins_R <- function(x, ..., useNames = NA) { 665s + suppressWarnings({ 665s + y <- t(apply(x, MARGIN = 1L, FUN = cummin)) 665s + }) 665s + 665s + # Preserve dimnames attribute? 665s + dim(y) <- dim(x) 665s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 665s + 665s + y 665s + } 665s > 665s > rowCummaxs_R <- function(x, ..., useNames = NA) { 665s + mode <- storage.mode(x) 665s + # Change mode because a bug is detected on cummax for integer in R-3.2.0 665s + storage.mode(x) <- "numeric" 665s + suppressWarnings({ 665s + y <- t(apply(x, MARGIN = 1L, FUN = cummax)) 665s + }) 665s + 665s + # Preserve dimnames attribute? 665s + dim(y) <- dim(x) 665s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 665s + 665s + storage.mode(y) <- mode 665s + y 665s + } 665s > 665s > 665s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 665s > # Subsetted tests 665s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 665s > source("utils/validateIndicesFramework.R") 665s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 665s > storage.mode(x) <- "integer" 665s > 665s > # To check dimnames attribute 665s > dimnames <- list(letters[1:6], LETTERS[1:6]) 665s > 665s > # Test with and without dimnames on x 665s > for (setDimnames in c(TRUE, FALSE)) { 665s + if (setDimnames) dimnames(x) <- dimnames 665s + else dimnames(x) <- NULL 665s + for (rows in index_cases) { 665s + for (cols in index_cases) { 665s + # Check names attribute 665s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 665s + validateIndicesTestMatrix(x, rows, cols, 665s + ftest = rowCummins, fsure = rowCummins_R, useNames = useNames,verbose=TRUE) 665s + validateIndicesTestMatrix(x, rows, cols, 665s + ftest = function(x, rows, cols, ..., useNames) { 665s + t(colCummins(t(x), rows = cols, cols = rows, useNames = useNames)) 665s + }, fsure = rowCummins_R, useNames = useNames) 665s + 665s + validateIndicesTestMatrix(x, rows, cols, 665s + ftest = rowCummaxs, fsure = rowCummaxs_R, useNames = useNames) 665s + validateIndicesTestMatrix(x, rows, cols, 665s + ftest = function(x, rows, cols, ..., useNames) { 665s + t(colCummaxs(t(x), rows = cols, cols = rows, useNames = useNames)) 665s + }, fsure = rowCummaxs_R, useNames = useNames) 665s + } 665s + } 665s + } 665s + } 671s > 671s 671s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 671s Copyright (C) 2024 The R Foundation for Statistical Computing 671s Platform: arm-unknown-linux-gnueabihf (32-bit) 671s 671s R is free software and comes with ABSOLUTELY NO WARRANTY. 671s You are welcome to redistribute it under certain conditions. 671s Type 'license()' or 'licence()' for distribution details. 671s 671s R is a collaborative project with many contributors. 671s Type 'contributors()' for more information and 671s 'citation()' on how to cite R or R packages in publications. 671s 671s Type 'demo()' for some demos, 'help()' for on-line help, or 671s 'help.start()' for an HTML browser interface to help. 671s Type 'q()' to quit R. 671s 671s > library("matrixStats") 671s > 671s > rowCumprods_R <- function(x, ..., useNames = NA) { 671s + suppressWarnings({ 671s + y <- t(apply(x, MARGIN = 1L, FUN = cumprod)) 671s + }) 671s + 671s + # Preserve dimnames attribute? 671s + dim(y) <- dim(x) 671s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 671s + 671s + y 671s + } 671s > 671s > 671s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 671s > # With and without some NAs 671s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 671s > for (mode in c("logical", "integer", "double")) { 671s + for (add_na in c(FALSE, TRUE)) { 671s + cat("add_na = ", add_na, "\n", sep = "") 671s + 671s + x <- matrix(1:50, nrow = 10L, ncol = 5L) 671s + if (add_na) { 671s + x[3:7, c(2, 4)] <- NA_real_ 671s + } 671s + cat("mode: ", mode, "\n", sep = "") 671s + storage.mode(x) <- mode 671s + str(x) 671s + 671s + # To check dimnames attribute 671s + dimnames <- list(letters[1:10], LETTERS[1:5]) 671s + 671s + # Test with and without dimnames on x 671s + for (setDimnames in c(TRUE, FALSE)) { 671s + if (setDimnames) dimnames(x) <- dimnames 671s + else dimnames(x) <- NULL 671s + # Check names attribute 671s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 671s + # Row/column ranges 671s + r0 <- rowCumprods_R(x, useNames = useNames) 671s + r1 <- rowCumprods(x, useNames = useNames) 671s + r2 <- t(colCumprods(t(x), useNames = useNames)) 671s + stopifnot(all.equal(r1, r2)) 671s + stopifnot(all.equal(r1, r0)) 671s + stopifnot(all.equal(r2, r0)) 671s + } # for (useNames ...) 671s + } # for (setDimnames ...) 671s + } # for (add_na ...) 671s + } # for (mode ...) 671s add_na = FALSE 671s mode: logical 671s logi [1:10, 1:5] TRUE TRUE TRUE TRUE TRUE TRUE ... 671s add_na = TRUE 671s mode: logical 671s logi [1:10, 1:5] TRUE TRUE TRUE TRUE TRUE TRUE ... 671s add_na = FALSE 671s mode: integer 671s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 671s add_na = TRUE 671s mode: integer 671s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 671s add_na = FALSE 671s mode: double 671s num [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 671s add_na = TRUE 671s mode: double 671s num [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 671s > 671s > 671s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 671s > # All NAs 671s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 671s > for (mode in c("logical", "integer", "double")) { 671s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 671s + cat("mode: ", mode, "\n", sep = "") 671s + storage.mode(x) <- mode 671s + str(x) 671s + 671s + # Test with and without dimnames on x 671s + for (setDimnames in c(TRUE, FALSE)) { 671s + if (setDimnames) dimnames(x) <- dimnames 671s + else dimnames(x) <- NULL 671s + # Check names attribute 671s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 671s + # Row/column ranges 671s + r0 <- rowCumprods_R(x, useNames = useNames) 671s + r1 <- rowCumprods(x, useNames = useNames) 671s + r2 <- t(colCumprods(t(x), useNames = useNames)) 671s + stopifnot(all.equal(r1, r2)) 671s + stopifnot(all.equal(r1, r0)) 671s + stopifnot(all.equal(r2, r0)) 671s + } # for (useNames ...) 671s + } # for (setDimnames ...) 671s + } # for (mode ...) 672s mode: logical 672s logi [1:10, 1:5] NA NA NA NA NA NA ... 672s mode: integer 672s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 672s mode: double 672s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 672s > 672s > 672s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 672s > # A 1x1 matrix 672s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 672s > for (mode in c("logical", "integer", "double")) { 672s + x <- matrix(0, nrow = 1L, ncol = 1L) 672s + cat("mode: ", mode, "\n", sep = "") 672s + storage.mode(x) <- mode 672s + str(x) 672s + 672s + dimnames <- list("a", "A") 672s + # Test with and without dimnames on x 672s + for (setDimnames in c(TRUE, FALSE)) { 672s + if (setDimnames) dimnames(x) <- dimnames 672s + else dimnames(x) <- NULL 672s + # Check names attribute 672s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 672s + # Row/column ranges 672s + r0 <- rowCumprods_R(x, useNames = useNames) 672s + r1 <- rowCumprods(x, useNames = useNames) 672s + r2 <- t(colCumprods(t(x), useNames = useNames)) 672s + stopifnot(all.equal(r1, r2)) 672s + stopifnot(all.equal(r1, r0)) 672s + stopifnot(all.equal(r2, r0)) 672s + } # for (useNames ...) 672s + } # for (setDimnames ...) 672s + } 672s mode: logical 672s logi [1, 1] FALSE 672s mode: integer 672s int [1, 1] 0 672s mode: double 672s num [1, 1] 0 672s > 672s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 672s > # BUG FIX TEST: Assert zeros don't trump NAs in integer matrices 672s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 672s > for (mode in c("logical", "integer", "double")) { 672s + x <- matrix(NA_real_, nrow = 3L, ncol = 2L) 672s + x[1, 2] <- 0 672s + x[2, 2] <- 1 672s + x[3, 1] <- 0 672s + storage.mode(x) <- mode 672s + cat("mode: ", mode, "\n", sep = "") 672s + str(x) 672s + 672s + dimnames <- list(letters[1:3], LETTERS[1:2]) 672s + # Test with and without dimnames on x 672s + for (setDimnames in c(TRUE, FALSE)) { 672s + if (setDimnames) dimnames(x) <- dimnames 672s + else dimnames(x) <- NULL 672s + # Check names attribute 672s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 672s + # Row/column ranges 672s + r0 <- rowCumprods_R(x, useNames = useNames) 672s + r1 <- rowCumprods(x, useNames = useNames) 672s + r2 <- t(colCumprods(t(x), useNames = useNames)) 672s + stopifnot(all.equal(r1, r2)) 672s + stopifnot(all.equal(r1, r0)) 672s + stopifnot(all.equal(r2, r0)) 672s + } # for (useNames ...) 672s + } # for (setDimnames ...) 672s + } 672s mode: logical 672s logi [1:3, 1:2] NA NA FALSE FALSE TRUE NA 672s mode: integer 672s int [1:3, 1:2] NA NA 0 0 1 NA 672s mode: double 672s num [1:3, 1:2] NA NA 0 0 1 NA 672s > 672s > 672s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 672s > # Corner cases 672s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 672s > for (mode in c("logical", "integer", "double")) { 672s + cat("mode: ", mode, "\n", sep = "") 672s + value <- 0 672s + storage.mode(value) <- mode 672s + if (mode == "logical") value2 <- 0L 672s + 672s + # A 0x0 matrix 672s + x <- matrix(value, nrow = 0L, ncol = 0L) 672s + str(x) 672s + r0 <- matrix(value2, nrow = nrow(x), ncol = ncol(x)) 672s + r1 <- rowCumprods(x) 672s + r2 <- t(colCumprods(t(x))) 672s + stopifnot(all.equal(r1, r2)) 672s + stopifnot(all.equal(r1, r0)) 672s + stopifnot(all.equal(r2, r0)) 672s + 672s + # A 0xK matrix 672s + x <- matrix(value, nrow = 0L, ncol = 5L) 672s + str(x) 672s + colnames <- LETTERS[1:5] 672s + # Test with and without dimnames on x 672s + for (setDimnames in c(TRUE, FALSE)) { 672s + if (setDimnames) colnames(x) <- colnames 672s + else dimnames(x) <- NULL 672s + # Check names attribute 672s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 672s + r0 <- rowCumprods_R(x, useNames = useNames) 672s + r1 <- rowCumprods(x, useNames = useNames) 672s + r2 <- t(rowCumprods(t(x), useNames = useNames)) 672s + stopifnot(all.equal(r1, r2)) 672s + stopifnot(all.equal(r1, r0)) 672s + stopifnot(all.equal(r2, r0)) 672s + } # for (useNames ...) 672s + } # for (setDimnames ...) 672s + 672s + # A Nx0 matrix 672s + x <- matrix(value, nrow = 5L, ncol = 0L) 672s + str(x) 672s + rownames <- LETTERS[1:5] 672s + # Test with and without dimnames on x 672s + for (setDimnames in c(TRUE, FALSE)) { 672s + if (setDimnames) rownames(x) <- rownames 672s + else dimnames(x) <- NULL 672s + # Check names attribute 672s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 672s + r0 <- rowCumprods_R(x, useNames = useNames) 672s + r1 <- rowCumprods(x, useNames = useNames) 672s + r2 <- t(rowCumprods(t(x), useNames = useNames)) 672s + stopifnot(all.equal(r1, r2)) 672s + stopifnot(all.equal(r1, r0)) 672s + stopifnot(all.equal(r2, r0)) 672s + } # for (useNames ...) 672s + } # for (setDimnames ...) 672s + } # for (mode ...) 672s mode: logical 672s logi[0 , 0 ] 672s logi[0 , 1:5] 672s logi[1:5, 0 ] 672s mode: integer 672s int[0 , 0 ] 672s int[0 , 1:5] 672s int[1:5, 0 ] 672s mode: double 672s num[0 , 0 ] 672s num[0 , 1:5] 672s num[1:5, 0 ] 672s > 672s 672s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 672s Copyright (C) 2024 The R Foundation for Statistical Computing 672s Platform: arm-unknown-linux-gnueabihf (32-bit) 672s 672s R is free software and comes with ABSOLUTELY NO WARRANTY. 672s You are welcome to redistribute it under certain conditions. 672s Type 'license()' or 'licence()' for distribution details. 672s 672s R is a collaborative project with many contributors. 672s Type 'contributors()' for more information and 672s 'citation()' on how to cite R or R packages in publications. 672s 672s Type 'demo()' for some demos, 'help()' for on-line help, or 672s 'help.start()' for an HTML browser interface to help. 672s Type 'q()' to quit R. 672s 672s > library("matrixStats") 672s > 672s > rowCumprods_R <- function(x, ..., useNames = NA) { 672s + suppressWarnings({ 672s + y <- t(apply(x, MARGIN = 1L, FUN = cumprod)) 672s + }) 672s + 672s + # Preserve dimnames attribute? 672s + dim(y) <- dim(x) 672s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 672s + 672s + y 672s + } 672s > 672s > 672s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 672s > # Subsetted tests 672s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 672s > source("utils/validateIndicesFramework.R") 672s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 672s > storage.mode(x) <- "integer" 672s > 672s > # To check dimnames attribute 672s > dimnames <- list(letters[1:6], LETTERS[1:6]) 672s > 672s > # Test with and without dimnames on x 672s > for (setDimnames in c(TRUE, FALSE)) { 672s + if (setDimnames) dimnames(x) <- dimnames 672s + else dimnames(x) <- NULL 672s + for (rows in index_cases) { 672s + for (cols in index_cases) { 672s + # Check names attribute 672s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 672s + validateIndicesTestMatrix(x, rows, cols, 672s + ftest = rowCumprods, fsure = rowCumprods_R, useNames = useNames) 672s + validateIndicesTestMatrix(x, rows, cols, 672s + ftest = function(x, rows, cols, ..., useNames) { 672s + t(colCumprods(t(x), rows = cols, cols = rows, useNames = useNames)) 672s + }, fsure = rowCumprods_R, useNames = useNames) 672s + } 672s + } 672s + } 672s + } 675s > 675s 675s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 675s Copyright (C) 2024 The R Foundation for Statistical Computing 675s Platform: arm-unknown-linux-gnueabihf (32-bit) 675s 675s R is free software and comes with ABSOLUTELY NO WARRANTY. 675s You are welcome to redistribute it under certain conditions. 675s Type 'license()' or 'licence()' for distribution details. 675s 675s R is a collaborative project with many contributors. 675s Type 'contributors()' for more information and 675s 'citation()' on how to cite R or R packages in publications. 675s 675s Type 'demo()' for some demos, 'help()' for on-line help, or 675s 'help.start()' for an HTML browser interface to help. 675s Type 'q()' to quit R. 675s 676s > library("matrixStats") 676s > 676s > rowCumsums_R <- function(x, ..., useNames = NA) { 676s + suppressWarnings({ 676s + y <- t(apply(x, MARGIN = 1L, FUN = cumsum)) 676s + }) 676s + 676s + # Preserve dimnames attribute? 676s + dim(y) <- dim(x) 676s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 676s + 676s + y 676s + } 676s > 676s > 676s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 676s > # With and without some NAs 676s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 676s > dimnames <- list(letters[1:10], LETTERS[1:5]) # to check dimnames attribute 676s > for (mode in c("logical", "integer", "double")) { 676s + for (add_na in c(FALSE, TRUE)) { 676s + cat("add_na = ", add_na, "\n", sep = "") 676s + 676s + x <- matrix(1:50, nrow = 10L, ncol = 5L) 676s + if (add_na) { 676s + x[3:7, c(2, 4)] <- NA_real_ 676s + } 676s + cat("mode: ", mode, "\n", sep = "") 676s + storage.mode(x) <- mode 676s + str(x) 676s + 676s + # Test with and without dimnames on x 676s + for (setDimnames in c(TRUE, FALSE)) { 676s + if (setDimnames) dimnames(x) <- dimnames 676s + else dimnames(x) <- NULL 676s + # Check names attribute 676s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 676s + # Row/column ranges 676s + r0 <- rowCumsums_R(x, useNames = useNames) 676s + r1 <- rowCumsums(x, useNames = useNames) 676s + r2 <- t(colCumsums(t(x), useNames = useNames)) 676s + stopifnot(all.equal(r1, r2)) 676s + stopifnot(all.equal(r1, r0)) 676s + stopifnot(all.equal(r2, r0)) 676s + } # for (useNames ...) 676s + } # for (setDimnames ...) 676s + } # for (add_na ...) 676s + } 676s add_na = FALSE 676s mode: logical 676s logi [1:10, 1:5] TRUE TRUE TRUE TRUE TRUE TRUE ... 676s add_na = TRUE 676s mode: logical 676s logi [1:10, 1:5] TRUE TRUE TRUE TRUE TRUE TRUE ... 676s add_na = FALSE 676s mode: integer 676s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 676s add_na = TRUE 676s mode: integer 676s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 676s add_na = FALSE 676s mode: double 676s num [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 676s add_na = TRUE 676s mode: double 676s num [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 676s > 676s > 676s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 676s > # All NAs 676s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 676s > for (mode in c("logical", "integer", "double")) { 676s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 676s + cat("mode: ", mode, "\n", sep = "") 676s + storage.mode(x) <- mode 676s + str(x) 676s + 676s + # Test with and without dimnames on x 676s + for (setDimnames in c(TRUE, FALSE)) { 676s + if (setDimnames) dimnames(x) <- dimnames 676s + else dimnames(x) <- NULL 676s + # Check names attribute 676s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 676s + # Row/column ranges 676s + r0 <- rowCumsums_R(x, useNames = useNames) 676s + r1 <- rowCumsums(x, useNames = useNames) 676s + r2 <- t(colCumsums(t(x), useNames = useNames)) 676s + stopifnot(all.equal(r1, r2)) 676s + stopifnot(all.equal(r1, r0)) 676s + stopifnot(all.equal(r2, r0)) 676s + } # for (useNames ...) 676s + } # for (setDimnames ...) 676s + } # for (mode ...) 676s mode: logical 676s logi [1:10, 1:5] NA NA NA NA NA NA ... 676s mode: integer 676s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 676s mode: double 676s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 676s > 676s > 676s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 676s > # A 1x1 matrix 676s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 676s > dimnames <- list("a", "A") # to check dimnames attribute 676s > for (mode in c("logical", "integer", "double")) { 676s + x <- matrix(0, nrow = 1L, ncol = 1L) 676s + cat("mode: ", mode, "\n", sep = "") 676s + storage.mode(x) <- mode 676s + str(x) 676s + 676s + r0 <- rowCumsums_R(x) 676s + r1 <- rowCumsums(x) 676s + r2 <- t(colCumsums(t(x))) 676s + stopifnot(all.equal(r1, r2)) 676s + stopifnot(all.equal(r1, r0)) 676s + stopifnot(all.equal(r2, r0)) 676s + 676s + # Check dimnames attribute 676s + dimnames(x) <- dimnames 676s + # r0 <- rowCumsums_R(x) 676s + # > r0 676s + # a 676s + # [1,] 0 676s + r1 <- rowCumsums(x, useNames = TRUE) 676s + r2 <- t(colCumsums(t(x), useNames = TRUE)) 676s + stopifnot(identical(dimnames(r1), dimnames)) 676s + stopifnot(identical(dimnames(r2), dimnames)) 676s + dimnames(x) <- NULL 676s + } 676s mode: logical 676s logi [1, 1] FALSE 676s mode: integer 676s int [1, 1] 0 676s mode: double 676s num [1, 1] 0 676s > 676s > 676s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 676s > # Corner cases 676s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 676s > names <- LETTERS[1:5] # to check dimnames attribute 676s > for (mode in c("logical", "integer", "double")) { 676s + cat("mode: ", mode, "\n", sep = "") 676s + value <- 0 676s + storage.mode(value) <- mode 676s + value2 <- value 676s + if (mode == "logical") value2 <- 0L 676s + 676s + # A 0x0 matrix 676s + x <- matrix(value, nrow = 0L, ncol = 0L) 676s + str(x) 676s + r0 <- matrix(value2, nrow = nrow(x), ncol = ncol(x)) 676s + r1 <- rowCumsums(x) 676s + r2 <- t(colCumsums(t(x))) 676s + stopifnot(all.equal(r1, r2)) 676s + stopifnot(all.equal(r1, r0)) 676s + stopifnot(all.equal(r2, r0)) 676s + 676s + # A 0xK matrix 676s + x <- matrix(value, nrow = 0L, ncol = 5L) 676s + str(x) 676s + colnames <- LETTERS[1:5] 676s + # Test with and without dimnames on x 676s + for (setDimnames in c(TRUE, FALSE)) { 676s + if (setDimnames) colnames(x) <- colnames 676s + else dimnames(x) <- NULL 676s + # Check names attribute 676s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 676s + r0 <- rowCumsums_R(x, useNames = useNames) 676s + r1 <- rowCumsums(x, useNames = useNames) 676s + r2 <- t(rowCumsums(t(x), useNames = useNames)) 676s + stopifnot(all.equal(r1, r2)) 676s + stopifnot(all.equal(r1, r0)) 676s + stopifnot(all.equal(r2, r0)) 676s + } # for (useNames ...) 676s + } # for (setDimnames ...) 676s + 676s + # A Nx0 matrix 676s + x <- matrix(value, nrow = 5L, ncol = 0L) 676s + str(x) 676s + rownames <- LETTERS[1:5] 676s + # Test with and without dimnames on x 676s + for (setDimnames in c(TRUE, FALSE)) { 676s + if (setDimnames) rownames(x) <- rownames 676s + else dimnames(x) <- NULL 676s + # Check names attribute 676s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 676s + r0 <- rowCumsums_R(x, useNames = useNames) 676s + r1 <- rowCumsums(x, useNames = useNames) 676s + r2 <- t(rowCumsums(t(x), useNames = useNames)) 676s + stopifnot(all.equal(r1, r2)) 676s + stopifnot(all.equal(r1, r0)) 676s + stopifnot(all.equal(r2, r0)) 676s + } # for (useNames ...) 676s + } # for (setDimnames ...) 676s + } # for (mode ...) 676s mode: logical 676s logi[0 , 0 ] 676s logi[0 , 1:5] 676s logi[1:5, 0 ] 676s mode: integer 676s int[0 , 0 ] 676s int[0 , 1:5] 676s int[1:5, 0 ] 676s mode: double 676s num[0 , 0 ] 676s num[0 , 1:5] 676s num[1:5, 0 ] 676s > 676s 676s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 676s Copyright (C) 2024 The R Foundation for Statistical Computing 676s Platform: arm-unknown-linux-gnueabihf (32-bit) 676s 676s R is free software and comes with ABSOLUTELY NO WARRANTY. 676s You are welcome to redistribute it under certain conditions. 676s Type 'license()' or 'licence()' for distribution details. 676s 676s R is a collaborative project with many contributors. 676s Type 'contributors()' for more information and 676s 'citation()' on how to cite R or R packages in publications. 676s 676s Type 'demo()' for some demos, 'help()' for on-line help, or 676s 'help.start()' for an HTML browser interface to help. 676s Type 'q()' to quit R. 676s 677s > library("matrixStats") 677s > 677s > rowCumsums_R <- function(x, ..., useNames = NA) { 677s + suppressWarnings({ 677s + y <- t(apply(x, MARGIN = 1L, FUN = cumsum)) 677s + }) 677s + 677s + # Preserve dimnames attribute? 677s + dim(y) <- dim(x) 677s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 677s + 677s + y 677s + } 677s > 677s > 677s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 677s > # Subsetted tests 677s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 677s > source("utils/validateIndicesFramework.R") 677s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 677s > storage.mode(x) <- "integer" 677s > 677s > # To check dimnames attribute 677s > dimnames <- list(letters[1:6], LETTERS[1:6]) 677s > 677s > # Test with and without dimnames on x 677s > for (setDimnames in c(TRUE, FALSE)) { 677s + if (setDimnames) dimnames(x) <- dimnames 677s + else dimnames(x) <- NULL 677s + for (rows in index_cases) { 677s + for (cols in index_cases) { 677s + # Check names attribute 677s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 677s + validateIndicesTestMatrix(x, rows, cols, 677s + ftest = rowCumsums, fsure = rowCumsums_R, useNames = useNames) 677s + validateIndicesTestMatrix(x, rows, cols, 677s + ftest = function(x, rows, cols, ..., useNames) { 677s + t(colCumsums(t(x), rows = cols, cols = rows, useNames = useNames)) 677s + }, fsure = rowCumsums_R, useNames = useNames) 677s + } 677s + } 677s + } 677s + } 680s > 680s 680s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 680s Copyright (C) 2024 The R Foundation for Statistical Computing 680s Platform: arm-unknown-linux-gnueabihf (32-bit) 680s 680s R is free software and comes with ABSOLUTELY NO WARRANTY. 680s You are welcome to redistribute it under certain conditions. 680s Type 'license()' or 'licence()' for distribution details. 680s 680s R is a collaborative project with many contributors. 680s Type 'contributors()' for more information and 680s 'citation()' on how to cite R or R packages in publications. 680s 680s Type 'demo()' for some demos, 'help()' for on-line help, or 680s 'help.start()' for an HTML browser interface to help. 680s Type 'q()' to quit R. 680s 680s > library("matrixStats") 680s > 680s > rowDiffs_R <- function(x, lag = 1L, differences = 1L, ..., useNames = NA) { 680s + ncol2 <- ncol(x) - lag * differences 680s + if (ncol2 <= 0) { 680s + y <- matrix(x[integer(0L)], nrow = nrow(x), ncol = 0L) 680s + # Preserve names attribute 680s + if (isTRUE(useNames) && !is.null(rownames(x))) rownames(y) <- rownames(x) 680s + return(y) 680s + } 680s + suppressWarnings({ 680s + y <- apply(x, MARGIN = 1L, FUN = diff, lag = lag, differences = differences) 680s + }) 680s + y <- t(y) 680s + 680s + # Preserve dimnames attribute 680s + dim(y) <- c(nrow(x), ncol2) 680s + if (isTRUE(useNames) && !is.null(dimnames(x))) { 680s + colnames <- colnames(x) 680s + if (!is.null(colnames)) { 680s + len <- length(colnames) 680s + colnames <- colnames[(len - ncol2 + 1):len] 680s + } 680s + dimnames(y) <- list(rownames(x), colnames) 680s + } 680s + else dimnames(y) <- NULL 680s + 680s + y 680s + } 680s > 680s > 680s > set.seed(0x42) 680s > 680s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 680s > # With and without some NAs 680s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 680s > for (mode in c("integer", "double")) { 680s + cat("mode: ", mode, "\n", sep = "") 680s + 680s + for (add_na in c(FALSE, TRUE)) { 680s + cat("add_na = ", add_na, "\n", sep = "") 680s + 680s + x <- matrix(sample(10 * 8) + 0.1, nrow = 10L, ncol = 8L) 680s + if (add_na) { 680s + x[3:7, c(2, 4)] <- NA_real_ 680s + } 680s + storage.mode(x) <- mode 680s + str(x) 680s + 680s + dimnames <- list(letters[1:10], LETTERS[1:8]) 680s + 680s + # Test with and without dimnames on x 680s + for (setDimnames in c(TRUE, FALSE)) { 680s + if (setDimnames) dimnames(x) <- dimnames 680s + else dimnames(x) <- NULL 680s + # Check dimnames attribute 680s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 680s + for (lag in 1:4) { 680s + for (differences in 1:3) { 680s + cat(sprintf("mode: %s, lag = %d, differences = %d\n", 680s + mode, lag, differences)) 680s + # Row/column ranges 680s + r0 <- rowDiffs_R(x, lag = lag, differences = differences, useNames = useNames) 680s + r1 <- rowDiffs(x, lag = lag, differences = differences, useNames = useNames) 680s + r2 <- t(colDiffs(t(x), lag = lag, differences = differences, useNames = useNames)) 680s + stopifnot(all.equal(r1, r0)) 680s + stopifnot(all.equal(r2, r0)) 680s + stopifnot(all.equal(r1, r2)) 680s + } 680s + } 680s + } # for (useNames ...) 680s + } # for (setDimnames ...) 680s + } # for (add_na ...) 680s + } # for (mode ...) 680s mode: integer 680s add_na = FALSE 680s int [1:10, 1:8] 68 26 29 47 48 10 1 38 16 40 ... 680s mode: integer, lag = 1, differences = 1 680s mode: integer, lag = 1, differences = 2 680s mode: integer, lag = 1, differences = 3 680s mode: integer, lag = 2, differences = 1 680s mode: integer, lag = 2, differences = 2 680s mode: integer, lag = 2, differences = 3 680s mode: integer, lag = 3, differences = 1 680s mode: integer, lag = 3, differences = 2 680s mode: integer, lag = 3, differences = 3 680s mode: integer, lag = 4, differences = 1 680s mode: integer, lag = 4, differences = 2 680s mode: integer, lag = 4, differences = 3 680s mode: integer, lag = 1, differences = 1 680s mode: integer, lag = 1, differences = 2 680s mode: integer, lag = 1, differences = 3 680s mode: integer, lag = 2, differences = 1 680s mode: integer, lag = 2, differences = 2 680s mode: integer, lag = 2, differences = 3 680s mode: integer, lag = 3, differences = 1 680s mode: integer, lag = 3, differences = 2 680s mode: integer, lag = 3, differences = 3 680s mode: integer, lag = 4, differences = 1 680s mode: integer, lag = 4, differences = 2 680s mode: integer, lag = 4, differences = 3 680s mode: integer, lag = 1, differences = 1 680s mode: integer, lag = 1, differences = 2 680s mode: integer, lag = 1, differences = 3 680s mode: integer, lag = 2, differences = 1 680s mode: integer, lag = 2, differences = 2 680s mode: integer, lag = 2, differences = 3 680s mode: integer, lag = 3, differences = 1 680s mode: integer, lag = 3, differences = 2 680s mode: integer, lag = 3, differences = 3 680s mode: integer, lag = 4, differences = 1 680s mode: integer, lag = 4, differences = 2 680s mode: integer, lag = 4, differences = 3 680s mode: integer, lag = 1, differences = 1 680s mode: integer, lag = 1, differences = 2 680s mode: integer, lag = 1, differences = 3 680s mode: integer, lag = 2, differences = 1 680s mode: integer, lag = 2, differences = 2 680s mode: integer, lag = 2, differences = 3 680s mode: integer, lag = 3, differences = 1 680s mode: integer, lag = 3, differences = 2 680s mode: integer, lag = 3, differences = 3 680s mode: integer, lag = 4, differences = 1 680s mode: integer, lag = 4, differences = 2 680s mode: integer, lag = 4, differences = 3 680s add_na = TRUE 680s int [1:10, 1:8] 80 71 7 52 79 22 31 10 29 63 ... 680s mode: integer, lag = 1, differences = 1 680s mode: integer, lag = 1, differences = 2 680s mode: integer, lag = 1, differences = 3 680s mode: integer, lag = 2, differences = 1 680s mode: integer, lag = 2, differences = 2 680s mode: integer, lag = 2, differences = 3 680s mode: integer, lag = 3, differences = 1 680s mode: integer, lag = 3, differences = 2 680s mode: integer, lag = 3, differences = 3 680s mode: integer, lag = 4, differences = 1 680s mode: integer, lag = 4, differences = 2 680s mode: integer, lag = 4, differences = 3 680s mode: integer, lag = 1, differences = 1 680s mode: integer, lag = 1, differences = 2 680s mode: integer, lag = 1, differences = 3 680s mode: integer, lag = 2, differences = 1 680s mode: integer, lag = 2, differences = 2 680s mode: integer, lag = 2, differences = 3 680s mode: integer, lag = 3, differences = 1 680s mode: integer, lag = 3, differences = 2 680s mode: integer, lag = 3, differences = 3 680s mode: integer, lag = 4, differences = 1 680s mode: integer, lag = 4, differences = 2 680s mode: integer, lag = 4, differences = 3 680s mode: integer, lag = 1, differences = 1 680s mode: integer, lag = 1, differences = 2 680s mode: integer, lag = 1, differences = 3 680s mode: integer, lag = 2, differences = 1 680s mode: integer, lag = 2, differences = 2 680s mode: integer, lag = 2, differences = 3 680s mode: integer, lag = 3, differences = 1 680s mode: integer, lag = 3, differences = 2 680s mode: integer, lag = 3, differences = 3 680s mode: integer, lag = 4, differences = 1 680s mode: integer, lag = 4, differences = 2 680s mode: integer, lag = 4, differences = 3 680s mode: integer, lag = 1, differences = 1 680s mode: integer, lag = 1, differences = 2 680s mode: integer, lag = 1, differences = 3 680s mode: integer, lag = 2, differences = 1 680s mode: integer, lag = 2, differences = 2 680s mode: integer, lag = 2, differences = 3 680s mode: integer, lag = 3, differences = 1 680s mode: integer, lag = 3, differences = 2 680s mode: integer, lag = 3, differences = 3 680s mode: integer, lag = 4, differences = 1 680s mode: integer, lag = 4, differences = 2 680s mode: integer, lag = 4, differences = 3 680s mode: double 680s add_na = FALSE 680s num [1:10, 1:8] 36.1 15.1 27.1 63.1 62.1 58.1 28.1 19.1 41.1 3.1 ... 680s mode: double, lag = 1, differences = 1 680s mode: double, lag = 1, differences = 2 680s mode: double, lag = 1, differences = 3 680s mode: double, lag = 2, differences = 1 680s mode: double, lag = 2, differences = 2 680s mode: double, lag = 2, differences = 3 680s mode: double, lag = 3, differences = 1 680s mode: double, lag = 3, differences = 2 680s mode: double, lag = 3, differences = 3 680s mode: double, lag = 4, differences = 1 680s mode: double, lag = 4, differences = 2 680s mode: double, lag = 4, differences = 3 680s mode: double, lag = 1, differences = 1 680s mode: double, lag = 1, differences = 2 680s mode: double, lag = 1, differences = 3 680s mode: double, lag = 2, differences = 1 680s mode: double, lag = 2, differences = 2 680s mode: double, lag = 2, differences = 3 680s mode: double, lag = 3, differences = 1 680s mode: double, lag = 3, differences = 2 680s mode: double, lag = 3, differences = 3 680s mode: double, lag = 4, differences = 1 680s mode: double, lag = 4, differences = 2 680s mode: double, lag = 4, differences = 3 680s mode: double, lag = 1, differences = 1 680s mode: double, lag = 1, differences = 2 680s mode: double, lag = 1, differences = 3 680s mode: double, lag = 2, differences = 1 680s mode: double, lag = 2, differences = 2 680s mode: double, lag = 2, differences = 3 680s mode: double, lag = 3, differences = 1 680s mode: double, lag = 3, differences = 2 680s mode: double, lag = 3, differences = 3 680s mode: double, lag = 4, differences = 1 680s mode: double, lag = 4, differences = 2 680s mode: double, lag = 4, differences = 3 680s mode: double, lag = 1, differences = 1 680s mode: double, lag = 1, differences = 2 680s mode: double, lag = 1, differences = 3 680s mode: double, lag = 2, differences = 1 680s mode: double, lag = 2, differences = 2 680s mode: double, lag = 2, differences = 3 680s mode: double, lag = 3, differences = 1 680s mode: double, lag = 3, differences = 2 680s mode: double, lag = 3, differences = 3 680s mode: double, lag = 4, differences = 1 680s mode: double, lag = 4, differences = 2 680s mode: double, lag = 4, differences = 3 680s add_na = TRUE 680s num [1:10, 1:8] 67.1 80.1 45.1 8.1 39.1 66.1 27.1 71.1 47.1 46.1 ... 680s mode: double, lag = 1, differences = 1 680s mode: double, lag = 1, differences = 2 680s mode: double, lag = 1, differences = 3 680s mode: double, lag = 2, differences = 1 680s mode: double, lag = 2, differences = 2 680s mode: double, lag = 2, differences = 3 680s mode: double, lag = 3, differences = 1 680s mode: double, lag = 3, differences = 2 680s mode: double, lag = 3, differences = 3 680s mode: double, lag = 4, differences = 1 680s mode: double, lag = 4, differences = 2 680s mode: double, lag = 4, differences = 3 680s mode: double, lag = 1, differences = 1 680s mode: double, lag = 1, differences = 2 680s mode: double, lag = 1, differences = 3 680s mode: double, lag = 2, differences = 1 680s mode: double, lag = 2, differences = 2 680s mode: double, lag = 2, differences = 3 680s mode: double, lag = 3, differences = 1 680s mode: double, lag = 3, differences = 2 680s mode: double, lag = 3, differences = 3 680s mode: double, lag = 4, differences = 1 680s mode: double, lag = 4, differences = 2 680s mode: double, lag = 4, differences = 3 680s mode: double, lag = 1, differences = 1 681s mode: double, lag = 1, differences = 2 681s mode: double, lag = 1, differences = 3 681s mode: double, lag = 2, differences = 1 681s mode: double, lag = 2, differences = 2 681s mode: double, lag = 2, differences = 3 681s mode: double, lag = 3, differences = 1 681s mode: double, lag = 3, differences = 2 681s mode: double, lag = 3, differences = 3 681s mode: double, lag = 4, differences = 1 681s mode: double, lag = 4, differences = 2 681s mode: double, lag = 4, differences = 3 681s mode: double, lag = 1, differences = 1 681s mode: double, lag = 1, differences = 2 681s mode: double, lag = 1, differences = 3 681s mode: double, lag = 2, differences = 1 681s mode: double, lag = 2, differences = 2 681s mode: double, lag = 2, differences = 3 681s mode: double, lag = 3, differences = 1 681s mode: double, lag = 3, differences = 2 681s mode: double, lag = 3, differences = 3 681s mode: double, lag = 4, differences = 1 681s mode: double, lag = 4, differences = 2 681s mode: double, lag = 4, differences = 3 681s > 681s > 681s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 681s > # All NAs 681s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 681s > for (mode in c("integer", "double")) { 681s + cat("mode: ", mode, "\n", sep = "") 681s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 681s + storage.mode(x) <- mode 681s + str(x) 681s + 681s + dimnames <- list(letters[1:10], LETTERS[1:5]) 681s + 681s + # Test with and without dimnames on x 681s + for (setDimnames in c(TRUE, FALSE)) { 681s + if (setDimnames) dimnames(x) <- dimnames 681s + else dimnames(x) <- NULL 681s + # Check dimnames attribute 681s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 681s + r0 <- rowDiffs_R(x, useNames = useNames) 681s + r1 <- rowDiffs(x, useNames = useNames) 681s + r2 <- t(colDiffs(t(x), useNames = useNames)) 681s + stopifnot(all.equal(r1, r0)) 681s + stopifnot(all.equal(r2, r0)) 681s + stopifnot(all.equal(r1, r2)) 681s + } # for (useNames ...) 681s + } # for (setDimnames ...) 681s + } # for (mode ...) 681s mode: integer 681s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 681s mode: double 681s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 681s > 681s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 681s > # A 1x1 matrix 681s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 681s > x <- matrix(0, nrow = 1L, ncol = 1L) 681s > dimnames <- list("a", "A") 681s > # Test with and without dimnames on x 681s > for (setDimnames in c(TRUE, FALSE)) { 681s + if (setDimnames) dimnames(x) <- dimnames 681s + else dimnames(x) <- NULL 681s + # Check dimnames attribute 681s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 681s + r0 <- rowDiffs_R(x, useNames = useNames) 681s + r1 <- rowDiffs(x, useNames = useNames) 681s + r2 <- t(colDiffs(t(x), useNames = useNames)) 681s + stopifnot(all.equal(r1, r0)) 681s + stopifnot(all.equal(r2, r0)) 681s + stopifnot(all.equal(r1, r2)) 681s + } # for (useNames ...) 681s + } # for (setDimnames ...) 681s > 681s 681s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 681s Copyright (C) 2024 The R Foundation for Statistical Computing 681s Platform: arm-unknown-linux-gnueabihf (32-bit) 681s 681s R is free software and comes with ABSOLUTELY NO WARRANTY. 681s You are welcome to redistribute it under certain conditions. 681s Type 'license()' or 'licence()' for distribution details. 681s 681s R is a collaborative project with many contributors. 681s Type 'contributors()' for more information and 681s 'citation()' on how to cite R or R packages in publications. 681s 681s Type 'demo()' for some demos, 'help()' for on-line help, or 681s 'help.start()' for an HTML browser interface to help. 681s Type 'q()' to quit R. 681s 681s > library("matrixStats") 681s > 681s > rowDiffs_R <- function(x, lag = 1L, differences = 1L, ..., useNames = NA) { 681s + ncol2 <- ncol(x) - lag * differences 681s + if (ncol2 <= 0) { 681s + y <- matrix(x[integer(0L)], nrow = nrow(x), ncol = 0L) 681s + # Preserve names attribute 681s + if (isTRUE(useNames) && !is.null(rownames(x))) rownames(y) <- rownames(x) 681s + return(y) 681s + } 681s + suppressWarnings({ 681s + y <- apply(x, MARGIN = 1L, FUN = diff, lag = lag, differences = differences) 681s + }) 681s + y <- t(y) 681s + 681s + # Preserve dimnames attribute 681s + dim(y) <- c(nrow(x), ncol2) 681s + if (isTRUE(useNames) && !is.null(dimnames(x))) { 681s + colnames <- colnames(x) 681s + if (!is.null(colnames)) { 681s + len <- length(colnames) 681s + colnames <- colnames[(len - ncol2 + 1):len] 681s + } 681s + dimnames(y) <- list(rownames(x), colnames) 681s + } 681s + else dimnames(y) <- NULL 681s + 681s + y 681s + } 681s > 681s > 681s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 681s > # Subsetted tests 681s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 681s > source("utils/validateIndicesFramework.R") 681s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 681s > storage.mode(x) <- "integer" 681s > 681s > # To check dimnames attribute 681s > dimnames <- list(letters[1:6], LETTERS[1:6]) 681s > 681s > # Test with and without dimnames on x 681s > for (setDimnames in c(TRUE, FALSE)) { 681s + if (setDimnames) dimnames(x) <- dimnames 681s + else dimnames(x) <- NULL 681s + 681s + count <- 0L 681s + for (rows in index_cases) { 681s + for (cols in index_cases) { 681s + count <- count + 1L 681s + for (lag in 1:2) { 681s + for (differences in 1:3) { 681s + # Check dimnames attribute 681s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 681s + useNames <- useNames[count %% length(useNames) + 1] 681s + validateIndicesTestMatrix(x, rows, cols, 681s + ftest = rowDiffs, fsure = rowDiffs_R, 681s + lag = lag, differences = differences, useNames = useNames) 681s + validateIndicesTestMatrix(x, rows, cols, 681s + ftest = function(x, rows, cols, ..., useNames) { 681s + t(colDiffs(t(x), rows = cols, cols = rows, ..., useNames = useNames)) 681s + }, fsure = rowDiffs_R, 681s + lag = lag, differences = differences, useNames = useNames) 681s + } 681s + } 681s + } 681s + } 681s + } 689s > 689s 689s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 689s Copyright (C) 2024 The R Foundation for Statistical Computing 689s Platform: arm-unknown-linux-gnueabihf (32-bit) 689s 689s R is free software and comes with ABSOLUTELY NO WARRANTY. 689s You are welcome to redistribute it under certain conditions. 689s Type 'license()' or 'licence()' for distribution details. 689s 689s R is a collaborative project with many contributors. 689s Type 'contributors()' for more information and 689s 'citation()' on how to cite R or R packages in publications. 689s 689s Type 'demo()' for some demos, 'help()' for on-line help, or 689s 'help.start()' for an HTML browser interface to help. 689s Type 'q()' to quit R. 689s 690s > library("matrixStats") 690s > 690s > rowIQRs_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 690s + quantile_na <- function(x, ..., na.rm = FALSE) { 690s + if (!na.rm && anyMissing(x)) 690s + return(c(NA_real_, NA_real_)) 690s + quantile(x, ..., na.rm = na.rm) 690s + } 690s + q <- apply(x, MARGIN = 1L, FUN = quantile_na, 690s + probs = c(0.25, 0.75), na.rm = na.rm) 690s + rownames(q) <- NULL # Not needed anymore 690s + 690s + # Preserve names attribute 690s + dim(q) <- c(2L, nrow(x)) 690s + colnames(q) <- if (isTRUE(useNames)) rownames(x) else NULL 690s + 690s + q[2L, , drop = TRUE] - q[1L, , drop = TRUE] 690s + } 690s > 690s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 690s > # Test with multiple quantiles 690s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 690s > for (mode in c("integer", "double")) { 690s + cat("mode: ", mode, "\n", sep = "") 690s + x <- matrix(1:100 + 0.1, nrow = 10, ncol = 10) 690s + storage.mode(x) <- mode 690s + str(x) 690s + 690s + # To check names attribute 690s + dimnames <- list(letters[1:10], LETTERS[1:10]) 690s + 690s + for (add_na in c(FALSE, TRUE)) { 690s + if (add_na) { 690s + x[3:5, 6:9] <- NA 690s + } 690s + # Test with and without dimnames on x 690s + for (setDimnames in c(TRUE, FALSE)) { 690s + if (setDimnames) dimnames(x) <- dimnames 690s + else dimnames(x) <- NULL 690s + for (na.rm in c(FALSE, TRUE)) { 690s + # Check names attribute 690s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 690s + probs <- c(0, 0.5, 1) 690s + q0 <- rowIQRs_R(x, na.rm = na.rm, useNames = useNames) 690s + print(q0) 690s + q1 <- rowIQRs(x, na.rm = na.rm, useNames = useNames) 690s + print(q1) 690s + stopifnot(all.equal(q1, q0)) 690s + q2 <- colIQRs(t(x), na.rm = na.rm, useNames = useNames) 690s + stopifnot(all.equal(q2, q0)) 690s + 690s + q <- iqr(x[3, ], na.rm = na.rm) 690s + print(q) 690s + } # for (useNames ...) 690s + } # for (na.rm ...) 690s + } # for (setDimnames ...) 690s + } # for (add_na ...) 690s + } # for (mode ...) 690s mode: integer 690s int [1:10, 1:10] 1 2 3 4 5 6 7 8 9 10 ... 690s a b c d e f g h i j 690s 45 45 45 45 45 45 45 45 45 45 690s a b c d e f g h i j 690s 45 45 45 45 45 45 45 45 45 45 690s [1] 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 690s a b c d e f g h i j 690s 45 45 45 45 45 45 45 45 45 45 690s a b c d e f g h i j 690s 45 45 45 45 45 45 45 45 45 45 690s [1] 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 690s a b c d e f g h i j 690s 45 45 NA NA NA 45 45 45 45 45 690s a b c d e f g h i j 690s 45 45 NA NA NA 45 45 45 45 45 690s [1] NA 690s [1] 45 45 NA NA NA 45 45 45 45 45 690s [1] 45 45 NA NA NA 45 45 45 45 45 690s [1] NA 690s a b c d e f g h i j 690s 45 45 25 25 25 45 45 45 45 45 690s a b c d e f g h i j 690s 45 45 25 25 25 45 45 45 45 45 690s [1] 25 690s [1] 45 45 25 25 25 45 45 45 45 45 690s [1] 45 45 25 25 25 45 45 45 45 45 690s [1] 25 690s [1] 45 45 NA NA NA 45 45 45 45 45 690s [1] 45 45 NA NA NA 45 45 45 45 45 690s [1] NA 690s [1] 45 45 NA NA NA 45 45 45 45 45 690s [1] 45 45 NA NA NA 45 45 45 45 45 690s [1] NA 690s [1] 45 45 25 25 25 45 45 45 45 45 690s [1] 45 45 25 25 25 45 45 45 45 45 690s [1] 25 690s [1] 45 45 25 25 25 45 45 45 45 45 690s [1] 45 45 25 25 25 45 45 45 45 45 690s [1] 25 690s mode: double 690s num [1:10, 1:10] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 690s a b c d e f g h i j 690s 45 45 45 45 45 45 45 45 45 45 690s a b c d e f g h i j 690s 45 45 45 45 45 45 45 45 45 45 690s [1] 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 690s a b c d e f g h i j 690s 45 45 45 45 45 45 45 45 45 45 690s a b c d e f g h i j 690s 45 45 45 45 45 45 45 45 45 45 690s [1] 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 45 45 45 45 45 45 45 45 45 690s [1] 45 690s a b c d e f g h i j 690s 45 45 NA NA NA 45 45 45 45 45 690s a b c d e f g h i j 690s 45 45 NA NA NA 45 45 45 45 45 690s [1] NA 690s [1] 45 45 NA NA NA 45 45 45 45 45 690s [1] 45 45 NA NA NA 45 45 45 45 45 690s [1] NA 690s a b c d e f g h i j 690s 45 45 25 25 25 45 45 45 45 45 690s a b c d e f g h i j 690s 45 45 25 25 25 45 45 45 45 45 690s [1] 25 690s [1] 45 45 25 25 25 45 45 45 45 45 690s [1] 45 45 25 25 25 45 45 45 45 45 690s [1] 25 690s [1] 45 45 NA NA NA 45 45 45 45 45 690s [1] 45 45 NA NA NA 45 45 45 45 45 690s [1] NA 690s [1] 45 45 NA NA NA 45 45 45 45 45 690s [1] 45 45 NA NA NA 45 45 45 45 45 690s [1] NA 690s [1] 45 45 25 25 25 45 45 45 45 45 690s [1] 45 45 25 25 25 45 45 45 45 45 690s [1] 25 690s [1] 45 45 25 25 25 45 45 45 45 45 690s [1] 45 45 25 25 25 45 45 45 45 45 690s [1] 25 690s > 690s > 690s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 690s > # Test corner cases 690s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 690s > for (mode in c("integer", "double")) { 690s + cat("mode: ", mode, "\n", sep = "") 690s + # Empty vectors 690s + x <- integer(0L) 690s + storage.mode(x) <- mode 690s + str(x) 690s + q <- iqr(x) 690s + print(q) 690s + stopifnot(identical(q, NA_real_)) 690s + 690s + # Scalar 690s + x <- 1L 690s + storage.mode(x) <- mode 690s + str(x) 690s + q <- iqr(x) 690s + str(q) 690s + stopifnot(identical(q, 0)) 690s + } 690s mode: integer 690s int(0) 690s [1] NA 690s int 1 690s num 0 690s mode: double 690s num(0) 690s [1] NA 690s num 1 690s num 0 690s > 690s > 690s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 690s > # Single row matrices 690s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 690s > x <- matrix(1, nrow = 1L, ncol = 2L) 690s > dimnames <- list("a", LETTERS[1:2]) 690s > # Test with and without dimnames on x 690s > for (setDimnames in c(TRUE, FALSE)) { 690s + if (setDimnames) dimnames(x) <- dimnames 690s + else dimnames(x) <- NULL 690s + # Check names attribute 690s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 690s + q0 <- rowIQRs_R(x, useNames = useNames) 690s + q1 <- rowIQRs(x, useNames = useNames) 690s + q2 <- colIQRs(t(x), useNames = useNames) 690s + stopifnot(all.equal(q0, q1)) 690s + stopifnot(all.equal(q0, q2)) 690s + } 690s + } 690s > 690s > x <- matrix(1, nrow = 2L, ncol = 1L) 690s > q <- colIQRs(x) 690s > stopifnot(identical(q, 0)) 690s > 690s 690s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 690s Copyright (C) 2024 The R Foundation for Statistical Computing 690s Platform: arm-unknown-linux-gnueabihf (32-bit) 690s 690s R is free software and comes with ABSOLUTELY NO WARRANTY. 690s You are welcome to redistribute it under certain conditions. 690s Type 'license()' or 'licence()' for distribution details. 690s 690s R is a collaborative project with many contributors. 690s Type 'contributors()' for more information and 690s 'citation()' on how to cite R or R packages in publications. 690s 690s Type 'demo()' for some demos, 'help()' for on-line help, or 690s 'help.start()' for an HTML browser interface to help. 690s Type 'q()' to quit R. 690s 691s > library("matrixStats") 691s > 691s > rowIQRs_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 691s + quantile_na <- function(x, ..., na.rm = FALSE) { 691s + if (!na.rm && anyMissing(x)) 691s + return(c(NA_real_, NA_real_)) 691s + quantile(x, ..., na.rm = na.rm) 691s + } 691s + q <- apply(x, MARGIN = 1L, FUN = quantile_na, 691s + probs = c(0.25, 0.75), na.rm = na.rm) 691s + rownames(q) <- NULL # Not needed anymore 691s + 691s + # Preserve names attribute 691s + dim(q) <- c(2L, nrow(x)) 691s + colnames(q) <- if (isTRUE(useNames)) rownames(x) else NULL 691s + 691s + q[2L, , drop = TRUE] - q[1L, , drop = TRUE] 691s + } 691s > 691s > 691s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 691s > # Subsetted tests 691s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 691s > source("utils/validateIndicesFramework.R") 691s > x <- runif(6, min = -6, max = 6) 691s > for (idxs in index_cases) { 691s + for (na.rm in c(TRUE, FALSE)) { 691s + validateIndicesTestVector(x, idxs, ftest = iqr, fsure = function(x, na.rm) { 691s + dim(x) <- c(1L, length(x)) 691s + rowIQRs_R(x, na.rm = na.rm) 691s + }, na.rm = na.rm) 691s + } 691s + } 691s > 691s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 691s > 691s > # To check names attribute 691s > dimnames <- list(letters[1:6], LETTERS[1:6]) 691s > 691s > # Test with and without dimnames on x 691s > for (setDimnames in c(TRUE, FALSE)) { 691s + if (setDimnames) dimnames(x) <- dimnames 691s + else dimnames(x) <- NULL 691s + 691s + count <- 0L 691s + for (rows in index_cases) { 691s + for (cols in index_cases) { 691s + count <- count + 1L 691s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 691s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 691s + useNames <- useNames[count %% length(useNames) + 1] 691s + 691s + validateIndicesTestMatrix(x, rows, cols, 691s + ftest = rowIQRs, fsure = rowIQRs_R, 691s + na.rm = na.rm, useNames = useNames) 691s + validateIndicesTestMatrix(x, rows, cols, 691s + fcoltest = colIQRs, fsure = rowIQRs_R, 691s + na.rm = na.rm, useNames = useNames) 691s + } 691s + } 691s + } 694s > 694s 694s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 694s Copyright (C) 2024 The R Foundation for Statistical Computing 694s Platform: arm-unknown-linux-gnueabihf (32-bit) 694s 694s R is free software and comes with ABSOLUTELY NO WARRANTY. 694s You are welcome to redistribute it under certain conditions. 694s Type 'license()' or 'licence()' for distribution details. 694s 694s R is a collaborative project with many contributors. 694s Type 'contributors()' for more information and 694s 'citation()' on how to cite R or R packages in publications. 694s 694s Type 'demo()' for some demos, 'help()' for on-line help, or 694s 'help.start()' for an HTML browser interface to help. 694s Type 'q()' to quit R. 694s 694s > # Test inspired by the harmonic mean example in R-help 694s > # thread '[R] Beyond double-precision?' on May 9, 2009. 694s > 694s > library("matrixStats") 694s > library("stats") 694s > 694s > logSumExp0 <- function(lx) { 694s + idx_max <- which.max(lx) 694s + log1p(sum(exp(lx[-idx_max] - lx[idx_max]))) + lx[idx_max] 694s + } 694s > 694s > n <- 200L 694s > set.seed(1) 694s > 694s > for (mode in c("integer", "double")) { 694s + cat("mode: ", mode, "\n", sep = "") 694s + x <- matrix(runif(n, min = 1.0, max = 3.0), nrow = 20L) 694s + storage.mode(x) <- mode 694s + str(x) 694s + 694s + # The logarithm of the harmonic mean by rows 694s + y_h <- log(1 / rowMeans(1 / x)) 694s + str(y_h) 694s + 694s + lx_neg <- -log(x) 694s + 694s + y0 <- log(ncol(x)) - apply(lx_neg, MARGIN = 1L, FUN = logSumExp0) 694s + stopifnot(all.equal(y0, y_h)) 694s + 694s + y1 <- log(ncol(x)) - apply(lx_neg, MARGIN = 1L, FUN = logSumExp) 694s + stopifnot(all.equal(y1, y0)) 694s + 694s + y2 <- log(ncol(x)) - rowLogSumExps(lx_neg) 694s + stopifnot(all.equal(y2, y0)) 694s + 694s + y3 <- log(ncol(x)) - colLogSumExps(t(lx_neg)) 694s + stopifnot(all.equal(y3, y0)) 694s + 694s + 694s + # The logarithm of the harmonic mean by columns 694s + y_h <- log(1 / colMeans(1 / x)) 694s + str(y_h) 694s + 694s + y0 <- log(nrow(x)) - apply(lx_neg, MARGIN = 2L, FUN = logSumExp0) 694s + stopifnot(all.equal(y0, y_h)) 694s + 694s + y1 <- log(nrow(x)) - apply(lx_neg, MARGIN = 2L, FUN = logSumExp) 694s + stopifnot(all.equal(y1, y0)) 694s + 694s + y2 <- log(nrow(x)) - colLogSumExps(lx_neg) 694s + stopifnot(all.equal(y2, y0)) 694s + 694s + y3 <- log(nrow(x)) - rowLogSumExps(t(lx_neg)) 694s + stopifnot(all.equal(y3, y0)) 694s + 694s + # Testing names 694s + rownames(lx_neg) <- seq_len(nrow(x)) 694s + colnames(lx_neg) <- seq_len(ncol(x)) 694s + y2 <- rowLogSumExps(lx_neg, useNames = TRUE) 694s + stopifnot(identical(names(y2), rownames(lx_neg))) 694s + y3 <- colLogSumExps(t(lx_neg), useNames = TRUE) 694s + stopifnot(identical(names(y3), rownames(lx_neg))) 694s + } # for (mode ...) 695s mode: integer 695s int [1:20, 1:10] 1 1 2 2 1 2 2 2 2 1 ... 695s num [1:20] 0.357 0.223 0.223 0.288 0.511 ... 695s num [1:10] 0.322 0.223 0.322 0.255 0.255 ... 695s mode: double 695s num [1:20, 1:10] 1.54 1.44 2.03 1.54 1.36 ... 695s num [1:20] 0.526 0.466 0.734 0.638 0.604 ... 695s num [1:10] 0.627 0.582 0.617 0.474 0.418 ... 695s > 695s > 695s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 695s > # Corner cases 695s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 695s > ## Zero-size matrices 695s > lx <- matrix(numeric(0L), nrow = 0L, ncol = 0L) 695s > y <- rowLogSumExps(lx) 695s > print(y) 695s numeric(0) 695s > stopifnot(length(y) == nrow(lx)) 695s > 695s > y <- colLogSumExps(lx) 695s > print(y) 695s numeric(0) 695s > stopifnot(length(y) == ncol(lx)) 695s > 695s > ## Zero-height matrices 695s > lx <- matrix(numeric(0L), nrow = 0L, ncol = 5L) 695s > y <- rowLogSumExps(lx) 695s > print(y) 695s numeric(0) 695s > stopifnot(length(y) == nrow(lx)) 695s > 695s > y <- colLogSumExps(lx) 695s > print(y) 695s [1] -Inf -Inf -Inf -Inf -Inf 695s > stopifnot(length(y) == ncol(lx)) 695s > stopifnot(all(y == -Inf)) 695s > 695s > ## Zero-width matrices 695s > lx <- matrix(numeric(0L), nrow = 5L, ncol = 0L) 695s > y <- colLogSumExps(lx) 695s > print(y) 695s numeric(0) 695s > stopifnot(length(y) == ncol(lx)) 695s > 695s > y <- rowLogSumExps(lx) 695s > print(y) 695s [1] -Inf -Inf -Inf -Inf -Inf 695s > stopifnot(length(y) == nrow(lx)) 695s > stopifnot(all(y == -Inf)) 695s > 695s > 695s > ## Matrices with one element 695s > lx <- matrix(1.0, nrow = 1L, ncol = 1L) 695s > y <- rowLogSumExps(lx) 695s > print(y) 695s [1] 1 695s > stopifnot(length(y) == nrow(lx)) 695s > stopifnot(all(y == lx)) 695s > 695s > y <- colLogSumExps(lx) 695s > print(y) 695s [1] 1 695s > stopifnot(length(y) == ncol(lx)) 695s > stopifnot(all(y == lx)) 695s > 695s > ## All missing values 695s > lx <- matrix(NA_real_, nrow = 1L, ncol = 1L) 695s > y <- rowLogSumExps(lx, na.rm = TRUE) 695s > print(y) 695s [1] -Inf 695s > stopifnot(length(y) == nrow(lx)) 695s > stopifnot(identical(y, -Inf)) 695s > 695s > lx <- matrix(NA_real_, nrow = 1L, ncol = 1L) 695s > y <- colLogSumExps(lx, na.rm = TRUE) 695s > print(y) 695s [1] -Inf 695s > stopifnot(length(y) == ncol(lx)) 695s > stopifnot(identical(y, -Inf)) 695s > 695s > lx <- matrix(NA_real_, nrow = 2L, ncol = 2L) 695s > y <- rowLogSumExps(lx, na.rm = TRUE) 695s > print(y) 695s [1] -Inf -Inf 695s > stopifnot(length(y) == nrow(lx)) 695s > stopifnot(all(y == -Inf)) 695s > 695s > y <- rowLogSumExps(lx, na.rm = FALSE) 695s > print(y) 695s [1] NA NA 695s > stopifnot(length(y) == nrow(lx)) 695s > stopifnot(all(is.na(y) & !is.nan(y))) 695s > 695s > lx <- matrix(NA_real_, nrow = 2L, ncol = 2L) 695s > y <- colLogSumExps(lx, na.rm = TRUE) 695s > print(y) 695s [1] -Inf -Inf 695s > stopifnot(length(y) == ncol(lx)) 695s > stopifnot(all(y == -Inf)) 695s > 695s > y <- colLogSumExps(lx, na.rm = FALSE) 695s > print(y) 695s [1] NA NA 695s > stopifnot(length(y) == ncol(lx)) 695s > stopifnot(all(is.na(y) & !is.nan(y))) 695s > 695s > ## +Inf values 695s > lx <- matrix(c(1, 2, +Inf), nrow = 3L, ncol = 2L) 695s > y <- colLogSumExps(lx, na.rm = TRUE) 695s > print(y) 695s [1] Inf Inf 695s > stopifnot(length(y) == ncol(lx)) 695s > stopifnot(all(y == +Inf)) 695s > 695s > ## multiple -Inf values 695s > lx <- matrix(c(-Inf, -Inf), nrow = 2L, ncol = 3L) 695s > y <- rowLogSumExps(lx) 695s > print(y) 695s [1] -Inf -Inf 695s > stopifnot(length(y) == nrow(lx)) 695s > stopifnot(all(y == -Inf)) 695s > 695s > lx <- matrix(c(-Inf, 5, -Inf), nrow = 2L, ncol = 3L, byrow = TRUE) 695s > y <- rowLogSumExps(lx) 695s > print(y) 695s [1] 5 5 695s > stopifnot(length(y) == nrow(lx)) 695s > stopifnot(all(y == 5)) 695s > 695s > ## Bug report #104 (https://github.com/HenrikBengtsson/matrixStats/issues/104) 695s > ## (This would core dump on Windows) 695s > x <- matrix(0.0, nrow = 2L, ncol = 32762L) 695s > y <- colLogSumExps(x) 695s > str(y) 695s num [1:32762] 0.693 0.693 0.693 0.693 0.693 ... 695s > 695s > ## Bug report #120 (https://github.com/HenrikBengtsson/matrixStats/issues/120) 695s > ## (This would error if x had rownames/colnames and non-NULL rows/cols were 695s > ## used) 695s > x <- matrix(runif(6), nrow = 2L, ncol = 3L, 695s + dimnames = list(c("A", "B"), c("a", "b", "c"))) 695s > y <- colLogSumExps(x, cols = 3:1, useNames = TRUE) 695s > stopifnot(names(y) == c("c", "b", "a")) 695s > y <- rowLogSumExps(x, rows = 2, useNames = TRUE) 695s > stopifnot(names(y) == "B") 695s > 695s > 695s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 695s > # Check names attributes 695s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 695s > 695s > ## Create isFALSE() if running on an old version of R 695s > if (!exists("isFALSE", mode="function")) { 695s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 695s + } 695s > 695s > rowLogSumExps_R <- function(x, ..., useNames = NA) { 695s + res <- apply(x, MARGIN = 1L, FUN = function(rx, ...) { 695s + log(sum(exp(rx), ...)) 695s + }, ...) 695s + if (isFALSE(useNames)) names(res) <- NULL 695s + res 695s + } 695s > 695s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6L, ncol = 6L) 695s > 695s > # To check names attribute 695s > dimnames <- list(letters[1:6], LETTERS[1:6]) 695s > 695s > # Test with and without dimnames on x 695s > for (setDimnames in c(TRUE, FALSE)) { 695s + if (setDimnames) dimnames(x) <- dimnames 695s + else dimnames(x) <- NULL 695s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 695s + y0 <- rowLogSumExps_R(x, useNames = useNames) 695s + y1 <- rowLogSumExps(x, useNames = useNames) 695s + y2 <- colLogSumExps(t(x), useNames = useNames) 695s + stopifnot(all.equal(y1, y0)) 695s + stopifnot(all.equal(y2, y0)) 695s + } 695s + } 695s > 695s 695s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 695s Copyright (C) 2024 The R Foundation for Statistical Computing 695s Platform: arm-unknown-linux-gnueabihf (32-bit) 695s 695s R is free software and comes with ABSOLUTELY NO WARRANTY. 695s You are welcome to redistribute it under certain conditions. 695s Type 'license()' or 'licence()' for distribution details. 695s 695s R is a collaborative project with many contributors. 695s Type 'contributors()' for more information and 695s 'citation()' on how to cite R or R packages in publications. 695s 695s Type 'demo()' for some demos, 'help()' for on-line help, or 695s 'help.start()' for an HTML browser interface to help. 695s Type 'q()' to quit R. 695s 695s > library("matrixStats") 695s > 695s > ## Create isFALSE() if running on an old version of R 695s > if (!exists("isFALSE", mode="function")) { 695s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 695s + } 695s > 695s > rowLogSumExps_R <- function(x, ..., useNames = NA) { 695s + res <- apply(x, MARGIN = 1L, FUN = function(rx, ...) { 695s + log(sum(exp(rx), ...)) 695s + }, ...) 695s + if (isFALSE(useNames)) names(res) <- NULL 695s + res 695s + } 695s > 695s > 695s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 695s > # Subsetted tests 695s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 695s > source("utils/validateIndicesFramework.R") 695s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 695s > 695s > # To check names attribute 695s > dimnames <- list(letters[1:6], LETTERS[1:6]) 695s > 695s > # Test with and without dimnames on x 695s > for (setDimnames in c(TRUE, FALSE)) { 695s + if (setDimnames) dimnames(x) <- dimnames 695s + else dimnames(x) <- NULL 695s + for (rows in index_cases) { 695s + for (cols in index_cases) { 695s + for (na.rm in c(TRUE, FALSE)) { 695s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 695s + validateIndicesTestMatrix(x, rows, cols, 695s + ftest = rowLogSumExps, 695s + fsure = rowLogSumExps_R, 695s + na.rm = na.rm, useNames = useNames) 695s + validateIndicesTestMatrix(x, rows, cols, 695s + fcoltest = colLogSumExps, 695s + fsure = rowLogSumExps_R, 695s + na.rm = na.rm, useNames = useNames) 695s + } 695s + } 695s + } 695s + } 695s + } 698s > 698s 698s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 698s Copyright (C) 2024 The R Foundation for Statistical Computing 698s Platform: arm-unknown-linux-gnueabihf (32-bit) 698s 698s R is free software and comes with ABSOLUTELY NO WARRANTY. 698s You are welcome to redistribute it under certain conditions. 698s Type 'license()' or 'licence()' for distribution details. 698s 698s R is a collaborative project with many contributors. 698s Type 'contributors()' for more information and 698s 'citation()' on how to cite R or R packages in publications. 698s 698s Type 'demo()' for some demos, 'help()' for on-line help, or 698s 'help.start()' for an HTML browser interface to help. 698s Type 'q()' to quit R. 698s 698s > library("matrixStats") 698s > 698s > ## Always allow testing of the 'center' argument (as long as it's not defunct) 698s > options(matrixStats.center.onUse = "ignore") 698s > 698s > rowMads_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 698s + suppressWarnings({ 698s + res <- apply(x, MARGIN = 1L, FUN = mad, na.rm = na.rm) 698s + }) 698s + if (is.na(useNames) || !useNames) names(res) <- NULL 698s + res 698s + } 698s > 698s > colMads_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 698s + suppressWarnings({ 698s + res <- apply(x, MARGIN = 2L, FUN = mad, na.rm = na.rm) 698s + }) 698s + if (is.na(useNames) || !useNames) names(res) <- NULL 698s + res 698s + } 698s > 698s > rowMads_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 698s + center <- rowMedians(x, cols = cols, na.rm = na.rm, useNames = FALSE) 698s + rowMads(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 698s + } 698s > 698s > colMads_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 698s + center <- colMedians(x, rows = rows, na.rm = na.rm, useNames = FALSE) 698s + colMads(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 698s + } 698s > 698s > 698s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 698s > # A 3x3 matrix (no ties) 698s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 698s > for (mode in c("integer", "double")) { 698s + x <- matrix(c(1, 2, 3, 2, 3, 4, 3, 4, 5) + 0.1, nrow = 3, ncol = 3) 698s + cat("mode: ", mode, "\n", sep = "") 698s + storage.mode(x) <- mode 698s + str(x) 698s + 698s + # To check name attribute 698s + dimnames <- list(letters[1:3], LETTERS[1:3]) 698s + 698s + # Test with and without dimnames on x 698s + for (setDimnames in c(TRUE, FALSE)) { 698s + if (setDimnames) dimnames(x) <- dimnames 698s + else dimnames(x) <- NULL 698s + tx <- t(x) 698s + # Check names attribute 698s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 698s + cat("rowMads():\n") 698s + center <- rowMedians(x, na.rm = TRUE, useNames = useNames) 698s + r0 <- rowMads_R(x, na.rm = TRUE, useNames = useNames) 698s + r1 <- rowMads(x, na.rm = TRUE, useNames = useNames) 698s + r1b <- rowMads_center(x, na.rm = TRUE, useNames = useNames) 698s + r1c <- rowMads(x, center = center, na.rm = TRUE, useNames = useNames) 698s + r2 <- colMads(tx, na.rm = TRUE, useNames = useNames) 698s + r2b <- colMads_center(tx, na.rm = TRUE, useNames = useNames) 698s + stopifnot(all.equal(r1, r2)) 698s + stopifnot(all.equal(r1, r0)) 698s + stopifnot(all.equal(r1b, r1)) 698s + stopifnot(all.equal(r1c, r1)) 698s + stopifnot(all.equal(r2, r0)) 698s + stopifnot(all.equal(r2b, r2)) 698s + 698s + cat("colMads():\n") 698s + center <- colMedians(x, na.rm = TRUE, useNames = useNames) 698s + r0 <- colMads_R(x, na.rm = TRUE, useNames = useNames) 698s + r1 <- colMads(x, na.rm = TRUE, useNames = useNames) 698s + r1b <- colMads_center(x, na.rm = TRUE, useNames = useNames) 698s + r1c <- colMads(x, center = center, na.rm = TRUE, useNames = useNames) 698s + r2 <- rowMads(tx, na.rm = TRUE, useNames = useNames) 698s + r2b <- rowMads_center(tx, na.rm = TRUE, useNames = useNames) 698s + stopifnot(all.equal(r1, r2)) 698s + stopifnot(all.equal(r1, r0)) 698s + stopifnot(all.equal(r1b, r1)) 698s + stopifnot(all.equal(r1c, r1)) 698s + stopifnot(all.equal(r2, r0)) 698s + stopifnot(all.equal(r2b, r2)) 698s + } 698s + } 698s + } 698s mode: integer 698s int [1:3, 1:3] 1 2 3 2 3 4 3 4 5 698s rowMads(): 698s colMads(): 698s rowMads(): 698s colMads(): 698s rowMads(): 698s colMads(): 698s rowMads(): 698s colMads(): 698s mode: double 698s num [1:3, 1:3] 1.1 2.1 3.1 2.1 3.1 4.1 3.1 4.1 5.1 698s rowMads(): 698s colMads(): 698s rowMads(): 698s colMads(): 698s rowMads(): 698s colMads(): 698s rowMads(): 698s colMads(): 698s > 698s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 698s > # Ties: a 4x4 matrix 698s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 698s > for (mode in c("integer", "double")) { 698s + x <- matrix(c(1:4, 2:5, 3:6, 4:7) + 0.1, nrow = 4, ncol = 4) 698s + cat("mode: ", mode, "\n", sep = "") 698s + storage.mode(x) <- mode 698s + str(x) 698s + tx <- t(x) 698s + 698s + # To check name attribute 698s + dimnames <- list(letters[1:4], LETTERS[1:4]) 698s + 698s + # Test with and without dimnames on x 698s + for (setDimnames in c(TRUE, FALSE)) { 698s + if (setDimnames) dimnames(x) <- dimnames 698s + else dimnames(x) <- NULL 698s + tx <- t(x) 698s + # Check names attribute 698s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 698s + cat("rowMads():\n") 698s + r0 <- rowMads_R(x, na.rm = TRUE, useNames = useNames) 698s + r1 <- rowMads(x, na.rm = TRUE, useNames = useNames) 698s + r2 <- colMads(tx, na.rm = TRUE, useNames = useNames) 698s + stopifnot(all.equal(r1, r2)) 698s + stopifnot(all.equal(r1, r0)) 698s + stopifnot(all.equal(r2, r0)) 698s + 698s + cat("colMads():\n") 698s + r0 <- colMads_R(x, na.rm = TRUE, useNames = useNames) 698s + r1 <- colMads(x, na.rm = TRUE, useNames = useNames) 698s + r2 <- rowMads(tx, na.rm = TRUE, useNames = useNames) 698s + stopifnot(all.equal(r1, r2)) 698s + stopifnot(all.equal(r1, r0)) 698s + stopifnot(all.equal(r2, r0)) 698s + } 698s + } 698s + } 698s mode: integer 698s int [1:4, 1:4] 1 2 3 4 2 3 4 5 3 4 ... 698s rowMads(): 698s colMads(): 698s rowMads(): 698s colMads(): 698s rowMads(): 698s colMads(): 698s rowMads(): 698s colMads(): 698s mode: double 698s num [1:4, 1:4] 1.1 2.1 3.1 4.1 2.1 3.1 4.1 5.1 3.1 4.1 ... 698s rowMads(): 698s colMads(): 698s rowMads(): 698s colMads(): 698s rowMads(): 698s colMads(): 698s rowMads(): 698s colMads(): 698s > tx <- NULL 698s > 698s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 698s > # No ties: a 3x3 matrix with an NA value 698s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 698s > for (mode in c("integer", "double")) { 698s + x <- matrix(c(1, 2, 3, 2, 3, 4, 3, 4, 5) + 0.1, nrow = 3, ncol = 3) 698s + x[2, 2] <- NA_real_ 698s + 698s + cat("mode: ", mode, "\n", sep = "") 698s + storage.mode(x) <- mode 698s + str(x) 698s + tx <- t(x) 698s + 698s + # To check name attribute 698s + dimnames <- list(letters[1:3], LETTERS[1:3]) 698s + 698s + # Test with and without dimnames on x 698s + for (setDimnames in c(TRUE, FALSE)) { 698s + if (setDimnames) dimnames(x) <- dimnames 698s + else dimnames(x) <- NULL 698s + tx <- t(x) 698s + # Check names attribute 698s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 698s + cat("rowMads():\n") 698s + r0 <- rowMads_R(x, na.rm = TRUE, useNames = useNames) 698s + r1 <- rowMads(x, na.rm = TRUE, useNames = useNames) 698s + r2 <- colMads(tx, na.rm = TRUE, useNames = useNames) 698s + stopifnot(all.equal(r1, r2)) 698s + stopifnot(all.equal(r1, r0)) 698s + stopifnot(all.equal(r2, r0)) 698s + 698s + cat("colMads():\n") 698s + r0 <- colMads_R(x, na.rm = TRUE, useNames = useNames) 698s + r1 <- colMads(x, na.rm = TRUE, useNames = useNames) 698s + r2 <- rowMads(tx, na.rm = TRUE, useNames = useNames) 698s + stopifnot(all.equal(r1, r2)) 698s + stopifnot(all.equal(r1, r0)) 698s + stopifnot(all.equal(r2, r0)) 698s + } 698s + } 698s + } 698s mode: integer 698s int [1:3, 1:3] 1 2 3 2 NA 4 3 4 5 698s rowMads(): 698s colMads(): 698s rowMads(): 698s colMads(): 698s rowMads(): 698s colMads(): 698s rowMads(): 698s colMads(): 698s mode: double 698s num [1:3, 1:3] 1.1 2.1 3.1 2.1 NA 4.1 3.1 4.1 5.1 698s rowMads(): 698s colMads(): 698s rowMads(): 698s colMads(): 698s rowMads(): 698s colMads(): 698s rowMads(): 698s colMads(): 698s > tx <- NULL 698s > 698s > 698s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 698s > # With and without some NAs 698s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 698s > for (add_na in c(FALSE, TRUE)) { 698s + cat("add_na = ", add_na, "\n", sep = "") 698s + 698s + x <- matrix(1:50, nrow = 10L, ncol = 5L) 698s + if (add_na) { 698s + x[3:7, c(2, 4)] <- NA_real_ 698s + } 698s + 698s + # To check name attribute 698s + dimnames <- list(letters[1:10], LETTERS[1:5]) 698s + 698s + # Test with and without dimnames on x 698s + for (setDimnames in c(TRUE, FALSE)) { 698s + if (setDimnames) dimnames(x) <- dimnames 698s + else dimnames(x) <- NULL 698s + tx <- t(x) 698s + # Row/column ranges 698s + for (na.rm in c(FALSE, TRUE)) { 698s + # Check names attribute 698s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 698s + cat("na.rm = ", na.rm, "\n", sep = "") 698s + cat("rowMads():\n") 698s + center <- rowMedians(x, na.rm = na.rm, useNames = useNames) 698s + r0 <- rowMads_R(x, na.rm = na.rm, useNames = useNames) 698s + r1 <- rowMads(x, na.rm = na.rm, useNames = useNames) 698s + r2 <- rowMads(x, center = center, na.rm = na.rm, useNames = useNames) 698s + r3 <- colMads(tx, na.rm = na.rm, useNames = useNames) 698s + stopifnot(all.equal(r1, r0)) 698s + stopifnot(all.equal(r2, r0)) 698s + stopifnot(all.equal(r2, r1)) 698s + stopifnot(all.equal(r3, r0)) 698s + stopifnot(all.equal(r3, r1)) 698s + stopifnot(all.equal(r3, r2)) 698s + 698s + cat("colMads():\n") 698s + center <- colMedians(x, na.rm = na.rm, useNames = useNames) 698s + r0 <- colMads_R(x, na.rm = na.rm, useNames = useNames) 698s + r1 <- colMads(x, na.rm = na.rm, useNames = useNames) 698s + r2 <- colMads(x, center = center, na.rm = na.rm, useNames = useNames) 698s + r3 <- rowMads(tx, na.rm = na.rm, useNames = useNames) 698s + stopifnot(all.equal(r1, r0)) 698s + stopifnot(all.equal(r2, r0)) 698s + stopifnot(all.equal(r2, r1)) 698s + stopifnot(all.equal(r3, r0)) 698s + stopifnot(all.equal(r3, r1)) 698s + stopifnot(all.equal(r3, r2)) 698s + } 698s + } 698s + } 698s + tx <- NULL 698s + } # for (add_na ...) 699s add_na = FALSE 699s na.rm = FALSE 699s rowMads(): 699s colMads(): 699s na.rm = FALSE 699s rowMads(): 699s colMads(): 699s na.rm = TRUE 699s rowMads(): 699s colMads(): 699s na.rm = TRUE 699s rowMads(): 699s colMads(): 699s na.rm = FALSE 699s rowMads(): 699s colMads(): 699s na.rm = FALSE 699s rowMads(): 699s colMads(): 699s na.rm = TRUE 699s rowMads(): 699s colMads(): 699s na.rm = TRUE 699s rowMads(): 699s colMads(): 699s add_na = TRUE 699s na.rm = FALSE 699s rowMads(): 699s colMads(): 699s na.rm = FALSE 699s rowMads(): 699s colMads(): 699s na.rm = TRUE 699s rowMads(): 699s colMads(): 699s na.rm = TRUE 699s rowMads(): 699s colMads(): 699s na.rm = FALSE 699s rowMads(): 699s colMads(): 699s na.rm = FALSE 699s rowMads(): 699s colMads(): 699s na.rm = TRUE 699s rowMads(): 699s colMads(): 699s na.rm = TRUE 699s rowMads(): 699s colMads(): 699s > 699s > 699s > 699s > 699s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 699s > # All NAs 699s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 699s > x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 699s > # Test with and without dimnames on x 699s > for (setDimnames in c(TRUE, FALSE)) { 699s + if (setDimnames) dimnames(x) <- dimnames 699s + else dimnames(x) <- NULL 699s + tx <- t(x) 699s + # Row/column ranges 699s + for (na.rm in c(FALSE, TRUE)) { 699s + # Check names attribute 699s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 699s + cat("na.rm = ", na.rm, "\n", sep = "") 699s + r0 <- rowMads_R(x, na.rm = na.rm, useNames = useNames) 699s + if (na.rm) r0[is.na(r0)] <- NaN 699s + r1 <- rowMads(x, na.rm = na.rm, useNames = useNames) 699s + r2 <- colMads(tx, na.rm = na.rm, useNames = useNames) 699s + stopifnot(all.equal(r1, r0)) 699s + stopifnot(all.equal(r2, r0)) 699s + stopifnot(all.equal(r1, r2)) 699s + } 699s + } 699s + } 699s na.rm = FALSE 699s na.rm = FALSE 699s na.rm = TRUE 699s na.rm = TRUE 699s na.rm = FALSE 699s na.rm = FALSE 699s na.rm = TRUE 699s na.rm = TRUE 699s > tx <- NULL 699s > 699s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 699s > # A 1x1 matrix 699s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 699s > x <- matrix(0, nrow = 1L, ncol = 1L) 699s > dimnames <- list("a", "A") 699s > # Test with and without dimnames on x 699s > for (setDimnames in c(TRUE, FALSE)) { 699s + if (setDimnames) dimnames(x) <- dimnames 699s + else dimnames(x) <- NULL 699s + tx <- t(x) 699s + # Row/column ranges 699s + for (na.rm in c(FALSE, TRUE)) { 699s + # Check names attribute 699s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 699s + cat("na.rm = ", na.rm, "\n", sep = "") 699s + r0 <- rowMads_R(x, na.rm = na.rm, useNames = useNames) 699s + r1 <- rowMads(x, na.rm = na.rm, useNames = useNames) 699s + r2 <- colMads(tx, na.rm = na.rm, useNames = useNames) 699s + stopifnot(all.equal(r1, r0)) 699s + stopifnot(all.equal(r2, r0)) 699s + stopifnot(all.equal(r1, r2)) 699s + } 699s + } 699s + } 699s na.rm = FALSE 699s na.rm = FALSE 699s na.rm = TRUE 699s na.rm = TRUE 699s na.rm = FALSE 699s na.rm = FALSE 699s na.rm = TRUE 699s na.rm = TRUE 699s > 699s > 699s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 699s > # A 0x0 matrix 699s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 699s > x <- matrix(double(0), nrow = 0, ncol = 0) 699s > tx <- t(x) 699s > for (na.rm in c(FALSE, TRUE)) { 699s + cat("na.rm = ", na.rm, "\n", sep = "") 699s + r0 <- rowMads_R(x, na.rm = na.rm) 699s + r1 <- rowMads(x, na.rm = na.rm) 699s + r2 <- colMads(tx, na.rm = na.rm) 699s + stopifnot(all.equal(r1, r2)) 699s + stopifnot(all.equal(r1, r0)) 699s + stopifnot(all.equal(r2, r0)) 699s + } 699s na.rm = FALSE 699s na.rm = TRUE 699s > 699s 699s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 699s Copyright (C) 2024 The R Foundation for Statistical Computing 699s Platform: arm-unknown-linux-gnueabihf (32-bit) 699s 699s R is free software and comes with ABSOLUTELY NO WARRANTY. 699s You are welcome to redistribute it under certain conditions. 699s Type 'license()' or 'licence()' for distribution details. 699s 699s R is a collaborative project with many contributors. 699s Type 'contributors()' for more information and 699s 'citation()' on how to cite R or R packages in publications. 699s 699s Type 'demo()' for some demos, 'help()' for on-line help, or 699s 'help.start()' for an HTML browser interface to help. 699s Type 'q()' to quit R. 699s 699s > library("matrixStats") 699s > 699s > ## Always allow testing of the 'center' argument (as long as it's not defunct) 699s > options(matrixStats.center.onUse = "ignore") 699s > 699s > rowMads_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 699s + suppressWarnings({ 699s + res <- apply(x, MARGIN = 1L, FUN = mad, na.rm = na.rm) 699s + }) 699s + if (is.na(useNames) || !useNames) names(res) <- NULL 699s + res 699s + } 699s > 699s > colMads_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 699s + suppressWarnings({ 699s + res <- apply(x, MARGIN = 2L, FUN = mad, na.rm = na.rm) 699s + }) 699s + if (is.na(useNames) || !useNames) names(res) <- NULL 699s + res 699s + } 699s > 699s > rowMads_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 699s + center <- rowMedians(x, cols = cols, na.rm = na.rm, useNames = FALSE) 699s + rowMads(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 699s + } 699s > 699s > colMads_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 699s + center <- colMedians(x, rows = rows, na.rm = na.rm, useNames = FALSE) 699s + colMads(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 699s + } 699s > 699s > 699s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 699s > # Subsetted tests 699s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 699s > source("utils/validateIndicesFramework.R") 699s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 699s > storage.mode(x) <- "integer" 699s > 699s > # To check names attribute 699s > dimnames <- list(letters[1:6], LETTERS[1:6]) 699s > 699s > # Test with and without dimnames on x 699s > for (setDimnames in c(TRUE, FALSE)) { 699s + if (setDimnames) dimnames(x) <- dimnames 699s + else dimnames(x) <- NULL 699s + 699s + count <- 0L 699s + for (rows in index_cases) { 699s + for (cols in index_cases) { 699s + count <- count + 1L 699s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 699s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 699s + useNames <- useNames[count %% length(useNames) + 1] 699s + 699s + validateIndicesTestMatrix(x, rows, cols, 699s + ftest = rowMads, fsure = rowMads_R, 699s + na.rm = na.rm, useNames = useNames) 699s + validateIndicesTestMatrix(x, rows, cols, 699s + ftest = rowMads_center, fsure = rowMads_R, 699s + na.rm = na.rm, useNames = useNames) 699s + 699s + validateIndicesTestMatrix(x, rows, cols, 699s + fcoltest = colMads, fsure = rowMads_R, 699s + na.rm = na.rm, useNames = useNames) 699s + validateIndicesTestMatrix(x, rows, cols, 699s + fcoltest = colMads_center, fsure = rowMads_R, 699s + na.rm = na.rm, useNames = useNames) 699s + } 699s + } 699s + } 702s > 702s 702s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 702s Copyright (C) 2024 The R Foundation for Statistical Computing 702s Platform: arm-unknown-linux-gnueabihf (32-bit) 702s 702s R is free software and comes with ABSOLUTELY NO WARRANTY. 702s You are welcome to redistribute it under certain conditions. 702s Type 'license()' or 'licence()' for distribution details. 702s 702s R is a collaborative project with many contributors. 702s Type 'contributors()' for more information and 702s 'citation()' on how to cite R or R packages in publications. 702s 702s Type 'demo()' for some demos, 'help()' for on-line help, or 702s 'help.start()' for an HTML browser interface to help. 702s Type 'q()' to quit R. 702s 703s > library("matrixStats") 703s > 703s > rowMeans_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 703s + res <- rowMeans(x, na.rm = na.rm) 703s + if (is.na(useNames) || !useNames) names(res) <- NULL 703s + res 703s + } 703s > 703s > colMeans_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 703s + res <- colMeans(x, na.rm = na.rm) 703s + if (is.na(useNames) || !useNames) names(res) <- NULL 703s + res 703s + } 703s > 703s > for (mode in c("integer", "logical", "double")) { 703s + x <- matrix(-4:4, nrow = 3, ncol = 3) 703s + storage.mode(x) <- mode 703s + if (mode == "double") x <- x + 0.1 703s + 703s + # To check names attribute 703s + dimnames <- list(letters[1:3], LETTERS[1:3]) 703s + 703s + # Test with and without dimnames on x 703s + for (setDimnames in c(TRUE, FALSE)) { 703s + if (setDimnames) dimnames(x) <- dimnames 703s + else dimnames(x) <- NULL 703s + # Check names attribute 703s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 703s + y0 <- rowMeans_R(x, na.rm = FALSE, useNames = useNames) 703s + y1 <- rowMeans2(x, na.rm = FALSE, useNames = useNames) 703s + stopifnot(all.equal(y1, y0)) 703s + 703s + y0 <- colMeans_R(x, na.rm = FALSE, useNames = useNames) 703s + y1 <- colMeans2(x, na.rm = FALSE, useNames = useNames) 703s + stopifnot(all.equal(y1, y0)) 703s + } 703s + } 703s + } 703s > 703s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 703s > # Special case: Single-element matrix 703s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 703s > cat("Special case: Single-element matrix:\n") 703s Special case: Single-element matrix: 703s > for (mode in c("integer", "logical", "double")) { 703s + x <- matrix(1, nrow = 1, ncol = 1) 703s + storage.mode(x) <- mode 703s + 703s + # To check names attribute 703s + dimnames <- list("a", "A") 703s + 703s + # Test with and without dimnames on x 703s + for (setDimnames in c(TRUE, FALSE)) { 703s + if (setDimnames) dimnames(x) <- dimnames 703s + else dimnames(x) <- NULL 703s + # Check names attribute 703s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 703s + y0 <- rowMeans_R(x, na.rm = FALSE, useNames = useNames) 703s + y1 <- rowMeans2(x, na.rm = FALSE, useNames = useNames) 703s + stopifnot(all.equal(y1, y0)) 703s + 703s + y0 <- colMeans_R(x, na.rm = FALSE, useNames = useNames) 703s + y1 <- colMeans2(x, na.rm = FALSE, useNames = useNames) 703s + stopifnot(all.equal(y1, y0)) 703s + } 703s + } 703s + } 703s > 703s > 703s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 703s > # Special case: Empty matrix 703s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 703s > cat("Special case: Empty matrix:\n") 703s Special case: Empty matrix: 703s > for (mode in c("integer", "logical", "double")) { 703s + x <- matrix(integer(0), nrow = 0, ncol = 0) 703s + storage.mode(x) <- mode 703s + 703s + y0 <- rowMeans(x, na.rm = FALSE) 703s + y1 <- rowMeans2(x, na.rm = FALSE) 703s + stopifnot(all.equal(y1, y0)) 703s + 703s + y0 <- colMeans(x, na.rm = FALSE) 703s + y1 <- colMeans2(x, na.rm = FALSE) 703s + stopifnot(all.equal(y1, y0)) 703s + } 703s > 703s > 703s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 703s > # Special case: All NAs 703s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 703s > cat("Special case: All NAs:\n") 703s Special case: All NAs: 703s > for (mode in c("integer", "logical", "double")) { 703s + x <- matrix(NA_integer_, nrow = 3, ncol = 3) 703s + storage.mode(x) <- mode 703s + 703s + # To check names attribute 703s + dimnames <- list(letters[1:3], LETTERS[1:3]) 703s + 703s + # Test with and without dimnames on x 703s + for (setDimnames in c(TRUE, FALSE)) { 703s + if (setDimnames) dimnames(x) <- dimnames 703s + else dimnames(x) <- NULL 703s + # Check names attribute 703s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 703s + y0 <- rowMeans_R(x, na.rm = TRUE, useNames = useNames) 703s + y1 <- rowMeans2(x, na.rm = TRUE, useNames = useNames) 703s + stopifnot(all.equal(y1, y0)) 703s + 703s + y0 <- colMeans_R(x, na.rm = TRUE, useNames = useNames) 703s + y1 <- colMeans2(x, na.rm = TRUE, useNames = useNames) 703s + stopifnot(all.equal(y1, y0)) 703s + } 703s + } 703s + } 703s > 703s > 703s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 703s > # Special case: All NaNs 703s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 703s > cat("Special case: All NaNs:\n") 703s Special case: All NaNs: 703s > x <- matrix(NA_real_, nrow = 3, ncol = 3) 703s > 703s > # Test with and without dimnames on x 703s > for (setDimnames in c(TRUE, FALSE)) { 703s + if (setDimnames) dimnames(x) <- dimnames 703s + else dimnames(x) <- NULL 703s + # Check names attribute 703s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 703s + y0 <- rowMeans_R(x, na.rm = TRUE, useNames = useNames) 703s + y1 <- rowMeans2(x, na.rm = TRUE, useNames = useNames) 703s + stopifnot(all.equal(y1, y0)) 703s + 703s + y0 <- colMeans_R(x, na.rm = TRUE, useNames = useNames) 703s + y1 <- colMeans2(x, na.rm = TRUE, useNames = useNames) 703s + stopifnot(all.equal(y1, y0)) 703s + } 703s + } 703s > 703s > 703s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 703s > # Special case: All Infs 703s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 703s > cat("Special case: All Infs:\n") 703s Special case: All Infs: 703s > x <- matrix(Inf, nrow = 3, ncol = 3) 703s > 703s > # Test with and without dimnames on x 703s > for (setDimnames in c(TRUE, FALSE)) { 703s + if (setDimnames) dimnames(x) <- dimnames 703s + else dimnames(x) <- NULL 703s + # Check names attribute 703s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 703s + y0 <- rowMeans_R(x, na.rm = FALSE, useNames = useNames) 703s + y1 <- rowMeans2(x, na.rm = FALSE, useNames = useNames) 703s + stopifnot(all.equal(y1, y0)) 703s + 703s + y0 <- colMeans_R(x, na.rm = FALSE, useNames = useNames) 703s + y1 <- colMeans2(x, na.rm = FALSE, useNames = useNames) 703s + stopifnot(all.equal(y1, y0)) 703s + } 703s + } 703s > 703s > 703s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 703s > # Special case: All -Infs 703s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 703s > cat("Special case: All -Infs:\n") 703s Special case: All -Infs: 703s > x <- matrix(-Inf, nrow = 3, ncol = 3) 703s > 703s > # Test with and without dimnames on x 703s > for (setDimnames in c(TRUE, FALSE)) { 703s + if (setDimnames) dimnames(x) <- dimnames 703s + else dimnames(x) <- NULL 703s + # Check names attribute 703s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 703s + y0 <- rowMeans_R(x, na.rm = FALSE, useNames = useNames) 703s + y1 <- rowMeans2(x, na.rm = FALSE, useNames = useNames) 703s + stopifnot(all.equal(y1, y0)) 703s + 703s + y0 <- colMeans_R(x, na.rm = FALSE, useNames = useNames) 703s + y1 <- colMeans2(x, na.rm = FALSE, useNames = useNames) 703s + stopifnot(all.equal(y1, y0)) 703s + } 703s + } 703s > 703s > 703s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 703s > # Special case: Infs and -Infs 703s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 703s > cat("Special case: Infs and -Infs:\n") 703s Special case: Infs and -Infs: 703s > x <- matrix(c(-Inf, +Inf), nrow = 4, ncol = 4) 703s > 703s > # To check names attribute 703s > dimnames <- list(letters[1:4], LETTERS[1:4]) 703s > 703s > # Test with and without dimnames on x 703s > for (setDimnames in c(TRUE, FALSE)) { 703s + if (setDimnames) dimnames(x) <- dimnames 703s + else dimnames(x) <- NULL 703s + # Check names attribute 703s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 703s + y0 <- rowMeans_R(x, na.rm = FALSE, useNames = useNames) 703s + y1 <- rowMeans2(x, na.rm = FALSE, useNames = useNames) 703s + stopifnot(all.equal(y1, y0)) 703s + 703s + y0 <- colMeans_R(x, na.rm = FALSE, useNames = useNames) 703s + y1 <- colMeans2(x, na.rm = FALSE, useNames = useNames) 703s + stopifnot(all.equal(y1, y0)) 703s + } 703s + } 703s > 703s > 703s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 703s > # Special case: NaNs and NAs 703s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 703s > cat("Special case: NaNs and NAs:\n") 703s Special case: NaNs and NAs: 703s > x <- matrix(c(NaN, NA_real_), nrow = 4, ncol = 4) 703s > 703s > # Test with and without dimnames on x 703s > for (setDimnames in c(TRUE, FALSE)) { 703s + if (setDimnames) dimnames(x) <- dimnames 703s + else dimnames(x) <- NULL 703s + # Check names attribute 703s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 703s + y0 <- rowMeans_R(x, na.rm = FALSE, useNames = useNames) 703s + str(y0) 703s + stopifnot(all(is.na(y0)), length(unique(y0)) >= 1L) 703s + y1 <- rowMeans2(x, na.rm = FALSE, useNames = useNames) 703s + str(y1) 703s + stopifnot(all(is.na(y1)), length(unique(y1)) >= 1L) 703s + stopifnot(all.equal(y1, y0)) 703s + 703s + y0 <- colMeans_R(x, na.rm = FALSE, useNames = useNames) 703s + stopifnot(all(is.na(y0)), length(unique(y0)) == 1L) 703s + y1 <- colMeans2(x, na.rm = FALSE, useNames = useNames) 703s + stopifnot(all(is.na(y1)), length(unique(y1)) == 1L) 703s + stopifnot(all.equal(y1, y0)) 703s + } 703s + } 703s Named num [1:4] NaN NA NaN NA 703s - attr(*, "names")= chr [1:4] "a" "b" "c" "d" 703s Named num [1:4] NaN NA NaN NA 703s - attr(*, "names")= chr [1:4] "a" "b" "c" "d" 703s num [1:4] NaN NA NaN NA 703s num [1:4] NaN NA NaN NA 703s num [1:4] NaN NA NaN NA 703s num [1:4] NaN NA NaN NA 703s num [1:4] NaN NA NaN NA 703s num [1:4] NaN NA NaN NA 703s > ## NOTE, due to compiler optimization, it is not guaranteed that NA is 703s > ## returned here (as one would expect). NaN might very well be returned, 703s > ## when both NA and NaN are involved. This is an accepted feature in R, 703s > ## which is documented in help("is.nan"). See also 703s > ## https://stat.ethz.ch/pipermail/r-devel/2017-April/074009.html. 703s > ## Thus, we cannot guarantee that y1 is identical to y0. 703s > 703s > 703s > 703s > 703s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 703s > # Special case: Integer overflow with ties 703s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 703s > cat("Special case: Integer overflow with ties:\n") 703s Special case: Integer overflow with ties: 703s > x <- matrix(.Machine$integer.max, nrow = 4, ncol = 4) 703s > 703s > # Test with and without dimnames on x 703s > for (setDimnames in c(TRUE, FALSE)) { 703s + if (setDimnames) dimnames(x) <- dimnames 703s + else dimnames(x) <- NULL 703s + # Check names attribute 703s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 703s + y0 <- rowMeans_R(x, na.rm = FALSE, useNames = useNames) 703s + y1 <- rowMeans2(x, na.rm = FALSE, useNames = useNames) 703s + stopifnot(all.equal(y1, y0)) 703s + 703s + y0 <- colMeans_R(x, na.rm = FALSE, useNames = useNames) 703s + y1 <- colMeans2(x, na.rm = FALSE, useNames = useNames) 703s + stopifnot(all.equal(y1, y0)) 703s + } 703s + } 703s > 703s > 703s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 703s > # Consistency checks 703s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 703s > set.seed(1) 703s > 703s > cat("Consistency checks:\n") 703s Consistency checks: 703s > n_sims <- if (Sys.getenv("_R_CHECK_USE_VALGRIND_") != "") 4L else 20L 703s > for (kk in seq_len(n_sims)) { 703s + cat("Random test #", kk, "\n", sep = "") 703s + 703s + # Simulate data in a matrix of any shape 703s + dim <- sample(50:200, size = 2) 703s + n <- prod(dim) 703s + x <- rnorm(n, sd = 100) 703s + dim(x) <- dim 703s + 703s + # Add NAs? 703s + if ((kk %% 4) %in% c(3, 0)) { 703s + cat("Adding NAs\n") 703s + nna <- sample(n, size = 1) 703s + na_values <- c(NA_real_, NaN) 703s + t <- sample(na_values, size = nna, replace = TRUE) 703s + x[sample(length(x), size = nna)] <- t 703s + } 703s + 703s + # Mode? 703s + modes <- "double" 703s + if ((kk %% 4) %in% c(2, 0)) { 703s + modes <- c("integer", "logical") 703s + } 703s + 703s + for (mode in modes) { 703s + if (mode != "double") { 703s + cat(sprintf("Coercing from %s to %s\n", storage.mode(x), mode)) 703s + storage.mode(x) <- mode 703s + } 703s + 703s + na.rm <- sample(c(TRUE, FALSE), size = 1) 703s + 703s + # rowMeans2(): 703s + y0 <- rowMeans(x, na.rm = na.rm) 703s + y1 <- rowMeans2(x, na.rm = na.rm) 703s + stopifnot(all.equal(y1, y0)) 703s + y2 <- colMeans2(t(x), na.rm = na.rm) 703s + stopifnot(all.equal(y2, y0)) 703s + 703s + # colMeans2(): 703s + y0 <- colMeans(x, na.rm = na.rm) 703s + y1 <- colMeans2(x, na.rm = na.rm) 703s + stopifnot(all.equal(y1, y0)) 703s + y2 <- rowMeans2(t(x), na.rm = na.rm) 703s + stopifnot(all.equal(y2, y0)) 703s + } 703s + } # for (kk ...) 703s Random test #1 703s Random test #2 703s Coercing from double to integer 703s Coercing from integer to logical 703s Random test #3 703s Adding NAs 703s Random test #4 703s Adding NAs 703s Coercing from double to integer 703s Coercing from integer to logical 703s Random test #5 703s Random test #6 703s Coercing from double to integer 703s Coercing from integer to logical 703s Random test #7 703s Adding NAs 703s Random test #8 703s Adding NAs 703s Coercing from double to integer 703s Coercing from integer to logical 703s Random test #9 703s Random test #10 703s Coercing from double to integer 703s Coercing from integer to logical 703s Random test #11 703s Adding NAs 703s Random test #12 703s Adding NAs 703s Coercing from double to integer 703s Coercing from integer to logical 703s Random test #13 703s Random test #14 703s Coercing from double to integer 703s Coercing from integer to logical 703s Random test #15 703s Adding NAs 703s Random test #16 703s Adding NAs 703s Coercing from double to integer 703s Coercing from integer to logical 703s Random test #17 703s Random test #18 703s Coercing from double to integer 703s Coercing from integer to logical 703s Random test #19 703s Adding NAs 703s Random test #20 703s Adding NAs 703s Coercing from double to integer 703s Coercing from integer to logical 703s > 704s 704s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 704s Copyright (C) 2024 The R Foundation for Statistical Computing 704s Platform: arm-unknown-linux-gnueabihf (32-bit) 704s 704s R is free software and comes with ABSOLUTELY NO WARRANTY. 704s You are welcome to redistribute it under certain conditions. 704s Type 'license()' or 'licence()' for distribution details. 704s 704s R is a collaborative project with many contributors. 704s Type 'contributors()' for more information and 704s 'citation()' on how to cite R or R packages in publications. 704s 704s Type 'demo()' for some demos, 'help()' for on-line help, or 704s 'help.start()' for an HTML browser interface to help. 704s Type 'q()' to quit R. 704s 704s > library("matrixStats") 704s > 704s > rowMeans_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 704s + res <- rowMeans(x, na.rm = na.rm) 704s + if (is.na(useNames) || !useNames) names(res) <- NULL 704s + res 704s + } 704s > 704s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 704s > # Subsetted tests 704s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 704s > source("utils/validateIndicesFramework.R") 704s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 704s > storage.mode(x) <- "integer" 704s > 704s > # To check names attribute 704s > dimnames <- list(letters[1:6], LETTERS[1:6]) 704s > 704s > # Test with and without dimnames on x 704s > for (setDimnames in c(TRUE, FALSE)) { 704s + if (setDimnames) dimnames(x) <- dimnames 704s + else dimnames(x) <- NULL 704s + 704s + count <- 0L 704s + for (rows in index_cases) { 704s + for (cols in index_cases) { 704s + count <- count + 1L 704s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 704s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 704s + useNames <- useNames[count %% length(useNames) + 1] 704s + 704s + validateIndicesTestMatrix(x, rows, cols, 704s + ftest = rowMeans2, fsure = rowMeans_R, 704s + na.rm = na.rm, useNames = useNames) 704s + validateIndicesTestMatrix(x, rows, cols, 704s + fcoltest = colMeans2, fsure = rowMeans_R, 704s + na.rm = na.rm, useNames = useNames) 704s + } 704s + } 704s + } 705s > 705s 705s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 705s Copyright (C) 2024 The R Foundation for Statistical Computing 705s Platform: arm-unknown-linux-gnueabihf (32-bit) 705s 705s R is free software and comes with ABSOLUTELY NO WARRANTY. 705s You are welcome to redistribute it under certain conditions. 705s Type 'license()' or 'licence()' for distribution details. 705s 705s R is a collaborative project with many contributors. 705s Type 'contributors()' for more information and 705s 'citation()' on how to cite R or R packages in publications. 705s 705s Type 'demo()' for some demos, 'help()' for on-line help, or 705s 'help.start()' for an HTML browser interface to help. 705s Type 'q()' to quit R. 705s 705s > library("matrixStats") 705s > 705s > rowMedians_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 705s + res <- apply(x, MARGIN = 1L, FUN = median, na.rm = na.rm) 705s + if (is.na(useNames) || !useNames) names(res) <- NULL 705s + res 705s + } 705s > 705s > colMedians_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 705s + res <- apply(x, MARGIN = 2L, FUN = median, na.rm = na.rm) 705s + if (is.na(useNames) || !useNames) names(res) <- NULL 705s + res 705s + } 705s > 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > # Special case: Non-ties 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > cat("Special case: Non-ties:\n") 705s Special case: Non-ties: 705s > for (mode in c("integer", "double")) { 705s + x <- matrix(1:9 + 0.1, nrow = 3, ncol = 3) 705s + storage.mode(x) <- mode 705s + 705s + # To check names attribute 705s + dimnames <- list(letters[1:3], LETTERS[1:3]) 705s + 705s + # Test with and without dimnames on x 705s + for (setDimnames in c(TRUE, FALSE)) { 705s + if (setDimnames) dimnames(x) <- dimnames 705s + else dimnames(x) <- NULL 705s + # Check names attribute 705s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 705s + y0 <- rowMedians_R(x, na.rm = FALSE, useNames = useNames) 705s + y1 <- rowMedians(x, na.rm = FALSE, useNames = useNames) 705s + stopifnot(all.equal(y1, y0)) 705s + 705s + y0 <- colMedians_R(x, na.rm = FALSE, useNames = useNames) 705s + y1 <- colMedians(x, na.rm = FALSE, useNames = useNames) 705s + stopifnot(all.equal(y1, y0)) 705s + } 705s + } 705s + } 705s > 705s > 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > # Special case: Ties 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > cat("Special case: Ties:\n") 705s Special case: Ties: 705s > for (mode in c("integer", "double")) { 705s + x <- matrix(1:16 + 0.1, nrow = 4, ncol = 4) 705s + storage.mode(x) <- mode 705s + 705s + # To check names attribute 705s + dimnames <- list(letters[1:4], LETTERS[1:4]) 705s + 705s + # Test with and without dimnames on x 705s + for (setDimnames in c(TRUE, FALSE)) { 705s + if (setDimnames) dimnames(x) <- dimnames 705s + else dimnames(x) <- NULL 705s + # Check names attribute 705s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 705s + y0 <- rowMedians_R(x, na.rm = FALSE, useNames = useNames) 705s + y1 <- rowMedians(x, na.rm = FALSE, useNames = useNames) 705s + stopifnot(all.equal(y1, y0)) 705s + 705s + y0 <- colMedians_R(x, na.rm = FALSE, useNames = useNames) 705s + y1 <- colMedians(x, na.rm = FALSE, useNames = useNames) 705s + stopifnot(all.equal(y1, y0)) 705s + } 705s + } 705s + } 705s > 705s > 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > # Special case: Single-element matrix 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > cat("Special case: Single-element matrix:\n") 705s Special case: Single-element matrix: 705s > for (mode in c("integer", "double")) { 705s + x <- matrix(1, nrow = 1, ncol = 1) 705s + storage.mode(x) <- mode 705s + 705s + # To check names attribute 705s + dimnames <- list("a", "A") 705s + 705s + # Test with and without dimnames on x 705s + for (setDimnames in c(TRUE, FALSE)) { 705s + if (setDimnames) dimnames(x) <- dimnames 705s + else dimnames(x) <- NULL 705s + # Check names attribute 705s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 705s + y0 <- rowMedians_R(x, na.rm = FALSE, useNames = useNames) 705s + y1 <- rowMedians(x, na.rm = FALSE, useNames = useNames) 705s + stopifnot(all.equal(y1, y0)) 705s + 705s + y0 <- colMedians_R(x, na.rm = FALSE, useNames = useNames) 705s + y1 <- colMedians(x, na.rm = FALSE, useNames = useNames) 705s + stopifnot(all.equal(y1, y0)) 705s + } 705s + } 705s + } 705s > 705s > 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > # Special case: Empty matrix 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > cat("Special case: Empty matrix:\n") 705s Special case: Empty matrix: 705s > for (mode in c("integer", "double")) { 705s + x <- matrix(integer(0), nrow = 0, ncol = 0) 705s + storage.mode(x) <- mode 705s + 705s + y0 <- rowMedians_R(x, na.rm = FALSE) 705s + y1 <- rowMedians(x, na.rm = FALSE) 705s + stopifnot(all.equal(y1, y0)) 705s + 705s + y0 <- colMedians_R(x, na.rm = FALSE) 705s + y1 <- colMedians(x, na.rm = FALSE) 705s + stopifnot(all.equal(y1, y0)) 705s + } 705s > 705s > 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > # Special case: All NAs 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > cat("Special case: All NAs:\n") 705s Special case: All NAs: 705s > for (mode in c("integer", "double")) { 705s + x <- matrix(NA_integer_, nrow = 3, ncol = 3) 705s + storage.mode(x) <- mode 705s + 705s + # To check names attribute 705s + dimnames <- list(letters[1:3], LETTERS[1:3]) 705s + 705s + # Test with and without dimnames on x 705s + for (setDimnames in c(TRUE, FALSE)) { 705s + if (setDimnames) dimnames(x) <- dimnames 705s + else dimnames(x) <- NULL 705s + # Check names attribute 705s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 705s + y0 <- rowMedians_R(x, na.rm = TRUE, useNames = useNames) 705s + y1 <- rowMedians(x, na.rm = TRUE, useNames = useNames) 705s + stopifnot(all.equal(y1, y0)) 705s + 705s + y0 <- colMedians_R(x, na.rm = TRUE, useNames = useNames) 705s + y1 <- colMedians(x, na.rm = TRUE, useNames = useNames) 705s + stopifnot(all.equal(y1, y0)) 705s + } 705s + } 705s + } 705s > 705s > 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > # Special case: All NaNs 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > cat("Special case: All NaNs:\n") 705s Special case: All NaNs: 705s > x <- matrix(NA_real_, nrow = 3, ncol = 3) 705s > 705s > # Test with and without dimnames on x 705s > for (setDimnames in c(TRUE, FALSE)) { 705s + if (setDimnames) dimnames(x) <- dimnames 705s + else dimnames(x) <- NULL 705s + # Check names attribute 705s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 705s + y0 <- rowMedians_R(x, na.rm = TRUE, useNames = useNames) 705s + y1 <- rowMedians(x, na.rm = TRUE, useNames = useNames) 705s + stopifnot(all.equal(y1, y0)) 705s + 705s + y0 <- colMedians_R(x, na.rm = TRUE, useNames = useNames) 705s + y1 <- colMedians(x, na.rm = TRUE, useNames = useNames) 705s + stopifnot(all.equal(y1, y0)) 705s + } 705s + } 705s > 705s > 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > # Special case: All Infs 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > cat("Special case: All Infs:\n") 705s Special case: All Infs: 705s > x <- matrix(Inf, nrow = 3, ncol = 3) 705s > 705s > # Test with and without dimnames on x 705s > for (setDimnames in c(TRUE, FALSE)) { 705s + if (setDimnames) dimnames(x) <- dimnames 705s + else dimnames(x) <- NULL 705s + # Check names attribute 705s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 705s + y0 <- rowMedians_R(x, na.rm = FALSE, useNames = useNames) 705s + y1 <- rowMedians(x, na.rm = FALSE, useNames = useNames) 705s + stopifnot(all.equal(y1, y0)) 705s + 705s + y0 <- colMedians_R(x, na.rm = FALSE, useNames = useNames) 705s + y1 <- colMedians(x, na.rm = FALSE, useNames = useNames) 705s + stopifnot(all.equal(y1, y0)) 705s + } 705s + } 705s > 705s > 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > # Special case: All -Infs 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > cat("Special case: All -Infs:\n") 705s Special case: All -Infs: 705s > x <- matrix(-Inf, nrow = 3, ncol = 3) 705s > 705s > # Test with and without dimnames on x 705s > for (setDimnames in c(TRUE, FALSE)) { 705s + if (setDimnames) dimnames(x) <- dimnames 705s + else dimnames(x) <- NULL 705s + # Check names attribute 705s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 705s + y0 <- rowMedians_R(x, na.rm = FALSE, useNames = useNames) 705s + y1 <- rowMedians(x, na.rm = FALSE, useNames = useNames) 705s + stopifnot(all.equal(y1, y0)) 705s + 705s + y0 <- colMedians_R(x, na.rm = FALSE, useNames = useNames) 705s + y1 <- colMedians(x, na.rm = FALSE, useNames = useNames) 705s + stopifnot(all.equal(y1, y0)) 705s + } 705s + } 705s > 705s > 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > # Special case: Infs and -Infs 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > cat("Special case: Infs and -Infs:\n") 705s Special case: Infs and -Infs: 705s > x <- matrix(c(-Inf, +Inf), nrow = 4, ncol = 4) 705s > 705s > # To check names attribute 705s > dimnames <- list(letters[1:4], LETTERS[1:4]) 705s > 705s > # Test with and without dimnames on x 705s > for (setDimnames in c(TRUE, FALSE)) { 705s + if (setDimnames) dimnames(x) <- dimnames 705s + else dimnames(x) <- NULL 705s + # Check names attribute 705s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 705s + y0 <- rowMedians_R(x, na.rm = FALSE, useNames = useNames) 705s + y1 <- rowMedians(x, na.rm = FALSE, useNames = useNames) 705s + stopifnot(all.equal(y1, y0)) 705s + 705s + y0 <- colMedians_R(x, na.rm = FALSE, useNames = useNames) 705s + y1 <- colMedians(x, na.rm = FALSE, useNames = useNames) 705s + stopifnot(all.equal(y1, y0)) 705s + } 705s + } 705s > 705s > 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > # Special case: Integer overflow with ties 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > cat("Special case: Integer overflow with ties:\n") 705s Special case: Integer overflow with ties: 705s > x <- matrix(.Machine$integer.max, nrow = 4, ncol = 4) 705s > 705s > # Test with and without dimnames on x 705s > for (setDimnames in c(TRUE, FALSE)) { 705s + if (setDimnames) dimnames(x) <- dimnames 705s + else dimnames(x) <- NULL 705s + # Check names attribute 705s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 705s + y0 <- rowMedians_R(x, na.rm = FALSE, useNames = useNames) 705s + y1 <- rowMedians(x, na.rm = FALSE, useNames = useNames) 705s + stopifnot(all.equal(y1, y0)) 705s + 705s + y0 <- colMedians_R(x, na.rm = FALSE, useNames = useNames) 705s + y1 <- colMedians(x, na.rm = FALSE, useNames = useNames) 705s + stopifnot(all.equal(y1, y0)) 705s + } 705s + } 705s > 705s > 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > # Consistency checks 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > set.seed(1) 705s > 705s > cat("Consistency checks:\n") 705s Consistency checks: 705s > n_sims <- if (Sys.getenv("_R_CHECK_USE_VALGRIND_") != "") 4L else 20L 705s > for (kk in seq_len(n_sims)) { 705s + cat("Random test #", kk, "\n", sep = "") 705s + 705s + # Simulate data in a matrix of any shape 705s + dim <- sample(50:200, size = 2) 705s + n <- prod(dim) 705s + x <- rnorm(n, sd = 100) 705s + dim(x) <- dim 705s + 705s + # Add NAs? 705s + if ((kk %% 4) %in% c(3, 0)) { 705s + cat("Adding NAs\n") 705s + nna <- sample(n, size = 1) 705s + na_values <- c(NA_real_, NaN) 705s + t <- sample(na_values, size = nna, replace = TRUE) 705s + x[sample(length(x), size = nna)] <- t 705s + } 705s + 705s + # Integer or double? 705s + if ((kk %% 4) %in% c(2, 0)) { 705s + cat("Coercing to integers\n") 705s + storage.mode(x) <- "integer" 705s + } 705s + 705s + na.rm <- sample(c(TRUE, FALSE), size = 1) 705s + 705s + # rowMedians(): 705s + y0 <- rowMedians_R(x, na.rm = na.rm) 705s + y1 <- rowMedians(x, na.rm = na.rm) 705s + stopifnot(all.equal(y1, y0)) 705s + y2 <- colMedians(t(x), na.rm = na.rm) 705s + stopifnot(all.equal(y2, y0)) 705s + 705s + # colMedians(): 705s + y0 <- colMedians_R(x, na.rm = na.rm) 705s + y1 <- colMedians(x, na.rm = na.rm) 705s + stopifnot(all.equal(y1, y0)) 705s + y2 <- rowMedians(t(x), na.rm = na.rm) 705s + stopifnot(all.equal(y2, y0)) 705s + } # for (kk ...) 705s Random test #1 705s Random test #2 705s Coercing to integers 705s Random test #3 705s Adding NAs 706s Random test #4 706s Adding NAs 706s Coercing to integers 706s Random test #5 706s Random test #6 706s Coercing to integers 706s Random test #7 706s Adding NAs 706s Random test #8 706s Adding NAs 706s Coercing to integers 706s Random test #9 706s Random test #10 706s Coercing to integers 706s Random test #11 706s Adding NAs 706s Random test #12 706s Adding NAs 706s Coercing to integers 706s Random test #13 706s Random test #14 706s Coercing to integers 706s Random test #15 706s Adding NAs 706s Random test #16 706s Adding NAs 706s Coercing to integers 706s Random test #17 706s Random test #18 706s Coercing to integers 706s Random test #19 706s Adding NAs 706s Random test #20 706s Adding NAs 706s Coercing to integers 706s > 706s 706s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 706s Copyright (C) 2024 The R Foundation for Statistical Computing 706s Platform: arm-unknown-linux-gnueabihf (32-bit) 706s 706s R is free software and comes with ABSOLUTELY NO WARRANTY. 706s You are welcome to redistribute it under certain conditions. 706s Type 'license()' or 'licence()' for distribution details. 706s 706s R is a collaborative project with many contributors. 706s Type 'contributors()' for more information and 706s 'citation()' on how to cite R or R packages in publications. 706s 706s Type 'demo()' for some demos, 'help()' for on-line help, or 706s 'help.start()' for an HTML browser interface to help. 706s Type 'q()' to quit R. 706s 707s > library("matrixStats") 707s > 707s > rowMedians_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 707s + res <- apply(x, MARGIN = 1L, FUN = median, na.rm = na.rm) 707s + if (is.na(useNames) || !useNames) names(res) <- NULL 707s + res 707s + } 707s > 707s > colMedians_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 707s + res <- apply(x, MARGIN = 2L, FUN = median, na.rm = na.rm) 707s + if (is.na(useNames) || !useNames) names(res) <- NULL 707s + res 707s + } 707s > 707s > 707s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 707s > # Subsetted tests 707s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 707s > source("utils/validateIndicesFramework.R") 707s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 707s > storage.mode(x) <- "integer" 707s > 707s > # To check names attribute 707s > dimnames <- list(letters[1:6], LETTERS[1:6]) 707s > 707s > # Test with and without dimnames on x 707s > for (setDimnames in c(TRUE, FALSE)) { 707s + if (setDimnames) dimnames(x) <- dimnames 707s + else dimnames(x) <- NULL 707s + 707s + count <- 0L 707s + for (rows in index_cases) { 707s + for (cols in index_cases) { 707s + count <- count + 1L 707s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 707s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 707s + useNames <- useNames[count %% length(useNames) + 1] 707s + 707s + validateIndicesTestMatrix(x, rows, cols, 707s + ftest = rowMedians, fsure = rowMedians_R, 707s + na.rm = na.rm, useNames = useNames) 707s + validateIndicesTestMatrix(x, rows, cols, 707s + fcoltest = colMedians, fsure = rowMedians_R, 707s + na.rm = na.rm, useNames = useNames) 707s + } 707s + } 707s + } 708s > 708s 708s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 708s Copyright (C) 2024 The R Foundation for Statistical Computing 708s Platform: arm-unknown-linux-gnueabihf (32-bit) 708s 708s R is free software and comes with ABSOLUTELY NO WARRANTY. 708s You are welcome to redistribute it under certain conditions. 708s Type 'license()' or 'licence()' for distribution details. 708s 708s R is a collaborative project with many contributors. 708s Type 'contributors()' for more information and 708s 'citation()' on how to cite R or R packages in publications. 708s 708s Type 'demo()' for some demos, 'help()' for on-line help, or 708s 'help.start()' for an HTML browser interface to help. 708s Type 'q()' to quit R. 708s 708s > library("matrixStats") 708s > library("stats") 708s > 708s > asWhich <- function(probs, max) { 708s + idx <- as.integer(round(probs * max)) 708s + if (idx < 1L) { 708s + idx <- 1L 708s + } else if (idx > max) { 708s + idx <- max 708s + } 708s + idx 708s + } # asWhich() 708s > 708s > rowOrderStats_R <- function(x, probs, ..., useNames = NA) { 708s + ans <- apply(x, MARGIN = 1L, FUN = quantile, probs = probs, type = 3L) 708s + 708s + # Remove Attributes 708s + if (is.na(useNames) || !useNames || length(ans) == 0L) attributes(ans) <- NULL 708s + ans 708s + } # rowOrderStats_R() 708s > 708s > 708s > set.seed(1) 708s > 708s > 708s > # Simulate data in a matrix of any shape 708s > nrow <- 60L 708s > ncol <- 30L 708s > x <- rnorm(nrow * ncol) 708s > dim(x) <- c(nrow, ncol) 708s > probs <- 0.3 708s > which <- asWhich(probs, max = ncol) 708s > 708s > y0 <- rowOrderStats_R(x, probs = probs) 708s > y1 <- rowOrderStats(x, which = which) 708s > stopifnot(all.equal(y1, y0)) 708s > y2 <- colOrderStats(t(x), which = which) 708s > stopifnot(all.equal(y2, y0)) 708s > 708s > 708s > 708s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 708s > # Consistency checks 708s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 708s > for (mode in c("integer", "double")) { 708s + cat("Consistency checks without NAs:\n") 708s + for (kk in 1:3) { 708s + cat("Random test #", kk, "\n", sep = "") 708s + 708s + # Simulate data in a matrix of any shape 708s + nrow <- sample(20L, size = 1L) 708s + ncol <- sample(20L, size = 1L) 708s + x <- rnorm(nrow * ncol) 708s + dim(x) <- c(nrow, ncol) 708s + 708s + cat("mode: ", mode, "\n", sep = "") 708s + storage.mode(x) <- mode 708s + str(x) 708s + 708s + probs <- runif(1) 708s + which <- asWhich(probs, max = ncol) 708s + 708s + y0 <- rowOrderStats_R(x, probs = probs) 708s + y1 <- rowOrderStats(x, which = which) 708s + stopifnot(all.equal(y1, y0)) 708s + y2 <- colOrderStats(t(x), which = which) 708s + stopifnot(all.equal(y2, y0)) 708s + } # for (kk in ...) 708s + } # for (mode ...) 708s Consistency checks without NAs: 708s Random test #1 708s mode: integer 708s int [1:14, 1:6] 0 0 1 0 2 -1 1 0 0 0 ... 708s Random test #2 708s mode: integer 708s int [1:8, 1:13] 0 0 1 -2 0 0 0 0 1 0 ... 708s Random test #3 708s mode: integer 708s int [1:20, 1:17] 0 0 0 0 1 0 1 0 0 -1 ... 708s Consistency checks without NAs: 708s Random test #1 708s mode: double 708s num [1:9, 1:5] -1.4286 -0.00386 -0.70456 -0.29242 -0.49607 ... 708s Random test #2 708s mode: double 708s num [1:11, 1:20] -0.796 0.482 -0.952 0.5 1.242 ... 708s Random test #3 708s mode: double 708s num [1:7, 1:18] 1.553 -2.405 0.167 -0.403 -1.746 ... 708s > 708s > 708s > # Check names attribute 708s > x <- matrix(1:9 + 0.1, nrow = 3L, ncol = 3L) 708s > 708s > probs <- runif(1) 708s > which <- asWhich(probs, max = ncol(x)) 708s > 708s > dimnames <- list(letters[1:3], LETTERS[1:3]) 708s > 708s > # Test with and without dimnames on x 708s > for (setDimnames in c(TRUE, FALSE)) { 708s + if (setDimnames) dimnames(x) <- dimnames 708s + else dimnames(x) <- NULL 708s + # Check names attribute 708s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 708s + y0 <- rowOrderStats_R(x, probs = probs, useNames = useNames) 708s + y1 <- rowOrderStats(x, which = which, useNames = useNames) 708s + stopifnot(all.equal(y1, y0)) 708s + y2 <- colOrderStats(t(x), which = which, useNames = useNames) 708s + stopifnot(all.equal(y2, y0)) 708s + } 708s + } 708s > 709s 709s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 709s Copyright (C) 2024 The R Foundation for Statistical Computing 709s Platform: arm-unknown-linux-gnueabihf (32-bit) 709s 709s R is free software and comes with ABSOLUTELY NO WARRANTY. 709s You are welcome to redistribute it under certain conditions. 709s Type 'license()' or 'licence()' for distribution details. 709s 709s R is a collaborative project with many contributors. 709s Type 'contributors()' for more information and 709s 'citation()' on how to cite R or R packages in publications. 709s 709s Type 'demo()' for some demos, 'help()' for on-line help, or 709s 'help.start()' for an HTML browser interface to help. 709s Type 'q()' to quit R. 709s 709s > library("matrixStats") 709s > 709s > rowOrderStats_R <- function(x, probs, ..., useNames = NA) { 709s + ans <- apply(x, MARGIN = 1L, FUN = quantile, probs = probs, type = 3L) 709s + 709s + # Remove Attributes 709s + if (is.na(useNames) || !useNames || length(ans) == 0L) attributes(ans) <- NULL 709s + ans 709s + } # rowOrderStats_R() 709s > 709s > 709s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 709s > # Subsetted tests 709s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 709s > source("utils/validateIndicesFramework.R") 709s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 709s > storage.mode(x) <- "integer" 709s > 709s > # To check names attribute 709s > dimnames <- list(letters[1:6], LETTERS[1:6]) 709s > 709s > probs <- 0.3 709s > # Test with and without dimnames on x 709s > for (setDimnames in c(TRUE, FALSE)) { 709s + if (setDimnames) dimnames(x) <- dimnames 709s + else dimnames(x) <- NULL 709s + for (rows in index_cases) { 709s + for (cols in index_cases) { 709s + # Check names attribute 709s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 709s + if (is.null(cols)) which <- round(probs * ncol(x)) 709s + else { 709s + xxrows <- rows 709s + suppressWarnings({ 709s + xx <- tryCatch(x[, cols, drop = FALSE], error = function(c) "error") 709s + if (identical(xx, "error")) which <- 0L 709s + else which <- round(probs * ncol(xx)) 709s + }) 709s + } 709s + if (which == 0L) next 709s + 709s + validateIndicesTestMatrix(x, rows, cols, 709s + ftest = rowOrderStats, fsure = rowOrderStats_R, 709s + which = which, probs = probs, useNames = useNames) 709s + validateIndicesTestMatrix(x, rows, cols, 709s + fcoltest = colOrderStats, fsure = rowOrderStats_R, 709s + which = which, probs = probs, useNames = useNames) 709s + } 709s + } 709s + } 709s + } 712s > 712s 712s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 712s Copyright (C) 2024 The R Foundation for Statistical Computing 712s Platform: arm-unknown-linux-gnueabihf (32-bit) 712s 712s R is free software and comes with ABSOLUTELY NO WARRANTY. 712s You are welcome to redistribute it under certain conditions. 712s Type 'license()' or 'licence()' for distribution details. 712s 712s R is a collaborative project with many contributors. 712s Type 'contributors()' for more information and 712s 'citation()' on how to cite R or R packages in publications. 712s 712s Type 'demo()' for some demos, 'help()' for on-line help, or 712s 'help.start()' for an HTML browser interface to help. 712s Type 'q()' to quit R. 712s 712s > library("matrixStats") 712s > 712s > rowProds_R <- function(x, FUN = prod, na.rm = FALSE, ..., useNames = NA) { 712s + res <- apply(x, MARGIN = 1L, FUN = FUN, na.rm = na.rm) 712s + if (is.na(useNames) || !useNames) names(res) <- NULL 712s + res 712s + } 712s > 712s > all.equal.na <- function(target, current, ...) { 712s + # Computations involving NaN may return NaN or NA, cf. ?is.nan 712s + current[is.nan(current)] <- NA_real_ 712s + target[is.nan(target)] <- NA_real_ 712s + all.equal(target, current, ...) 712s + } 712s > 712s > for (mode in c("integer", "double")) { 712s + # Missing values 712s + x <- matrix(c(1, NA, NaN, 1, 1, 0, 1, 0), nrow = 4, ncol = 2) 712s + cat("mode: ", mode, "\n", sep = "") 712s + storage.mode(x) <- mode 712s + str(x) 712s + 712s + # To check names attribute 712s + dimnames <- list(letters[1:4], LETTERS[1:2]) 712s + 712s + # Test with and without dimnames on x 712s + for (setDimnames in c(TRUE, FALSE)) { 712s + if (setDimnames) dimnames(x) <- dimnames 712s + else dimnames(x) <- NULL 712s + # Check names attribute 712s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 712s + y0 <- rowProds_R(x, na.rm = TRUE, useNames = useNames) 712s + print(y0) 712s + y1 <- rowProds(x, na.rm = TRUE, useNames = useNames) 712s + print(y1) 712s + y2 <- colProds(t(x), na.rm = TRUE, useNames = useNames) 712s + print(y2) 712s + stopifnot(all.equal(y1, y0)) 712s + stopifnot(all.equal(y2, y1)) 712s + 712s + # Missing values 712s + y0 <- rowProds_R(x, na.rm = FALSE, useNames = useNames) 712s + print(y0) 712s + y1 <- rowProds(x, na.rm = FALSE, useNames = useNames) 712s + print(y1) 712s + y2 <- colProds(t(x), na.rm = FALSE, useNames = useNames) 712s + print(y2) 712s + stopifnot(all.equal(y1, y0)) 712s + stopifnot(all.equal(y2, y1)) 712s + 712s + # "Empty" rows 712s + y0 <- rowProds_R(x[integer(0), , drop = FALSE], na.rm = FALSE, useNames = useNames) 712s + print(y0) 712s + y1 <- rowProds(x[integer(0), , drop = FALSE], na.rm = FALSE, useNames = useNames) 712s + print(y1) 712s + y2 <- colProds(t(x[integer(0), , drop = FALSE]), na.rm = FALSE, useNames = useNames) 712s + print(y2) 712s + stopifnot(all.equal.na(y1, y0)) 712s + stopifnot(all.equal(y2, y1)) 712s + stopifnot(length(y1) == 0L) 712s + 712s + # Using product() 712s + y1 <- rowProds(x, method = "expSumLog", na.rm = FALSE, useNames = useNames) 712s + print(y1) 712s + y2 <- colProds(t(x), method = "expSumLog", na.rm = FALSE, useNames = useNames) 712s + print(y2) 712s + stopifnot(all.equal(y2, y1)) 712s + } 712s + } 712s + } # for (mode ...) 712s mode: integer 712s int [1:4, 1:2] 1 NA NA 1 1 0 1 0 712s a b c d 712s 1 0 1 0 712s a b c d 712s 1 0 1 0 712s a b c d 712s 1 0 1 0 712s a b c d 712s 1 NA NA 0 712s a b c d 712s 1 NA NA 0 712s a b c d 712s 1 NA NA 0 712s numeric(0) 712s numeric(0) 712s numeric(0) 712s a b c d 712s 1 NA NA 0 712s a b c d 712s 1 NA NA 0 712s [1] 1 0 1 0 712s [1] 1 0 1 0 712s [1] 1 0 1 0 712s [1] 1 NA NA 0 712s [1] 1 NA NA 0 712s [1] 1 NA NA 0 712s numeric(0) 712s numeric(0) 712s numeric(0) 712s [1] 1 NA NA 0 712s [1] 1 NA NA 0 712s [1] 1 0 1 0 712s [1] 1 0 1 0 712s [1] 1 0 1 0 712s [1] 1 NA NA 0 712s [1] 1 NA NA 0 712s [1] 1 NA NA 0 712s numeric(0) 712s numeric(0) 712s numeric(0) 712s [1] 1 NA NA 0 712s [1] 1 NA NA 0 712s [1] 1 0 1 0 712s [1] 1 0 1 0 712s [1] 1 0 1 0 712s [1] 1 NA NA 0 712s [1] 1 NA NA 0 712s [1] 1 NA NA 0 712s numeric(0) 712s numeric(0) 712s numeric(0) 712s [1] 1 NA NA 0 712s [1] 1 NA NA 0 712s mode: double 712s num [1:4, 1:2] 1 NA NaN 1 1 0 1 0 712s a b c d 712s 1 0 1 0 712s a b c d 712s 1 0 1 0 712s a b c d 712s 1 0 1 0 712s a b c d 712s 1 NA NaN 0 712s a b c d 712s 1 NA NaN 0 712s a b c d 712s 1 NA NaN 0 712s numeric(0) 712s numeric(0) 712s numeric(0) 712s a b c d 712s 1 NA NA 0 712s a b c d 712s 1 NA NA 0 712s [1] 1 0 1 0 712s [1] 1 0 1 0 712s [1] 1 0 1 0 712s [1] 1 NA NaN 0 712s [1] 1 NA NaN 0 712s [1] 1 NA NaN 0 712s numeric(0) 712s numeric(0) 712s numeric(0) 712s [1] 1 NA NA 0 712s [1] 1 NA NA 0 712s [1] 1 0 1 0 712s [1] 1 0 1 0 712s [1] 1 0 1 0 712s [1] 1 NA NaN 0 712s [1] 1 NA NaN 0 712s [1] 1 NA NaN 0 712s numeric(0) 712s numeric(0) 712s numeric(0) 712s [1] 1 NA NA 0 712s [1] 1 NA NA 0 712s [1] 1 0 1 0 712s [1] 1 0 1 0 712s [1] 1 0 1 0 712s [1] 1 NA NaN 0 712s [1] 1 NA NaN 0 712s [1] 1 NA NaN 0 712s numeric(0) 712s numeric(0) 712s numeric(0) 712s [1] 1 NA NA 0 712s [1] 1 NA NA 0 712s > 712s > 712s > # Bug report 2012-06-25 712s > x <- matrix(c(1, 1, 1, 1, 1, 0, 1, 0), nrow = 4, ncol = 2) 712s > y0 <- rowProds_R(x) 712s > print(y0) 712s [1] 1 0 1 0 712s > y1 <- rowProds(x) 712s > print(y1) 712s [1] 1 0 1 0 712s > y2 <- colProds(t(x)) 712s > print(y2) 712s [1] 1 0 1 0 712s > stopifnot(all.equal.na(y1, y0)) 712s > stopifnot(all.equal.na(y1, x[, 1] * x[, 2])) 712s > stopifnot(all.equal.na(y2, y1)) 712s > # Check names attribute 712s > dimnames(x) <- dimnames 712s > y0 <- rowProds_R(x, useNames = TRUE) 712s > print(y0) 712s a b c d 712s 1 0 1 0 712s > y1 <- rowProds(x, useNames = TRUE) 712s > print(y1) 712s a b c d 712s 1 0 1 0 712s > y2 <- colProds(t(x), useNames = TRUE) 712s > print(y2) 712s a b c d 712s 1 0 1 0 712s > stopifnot(all.equal.na(y1, y0)) 712s > stopifnot(all.equal.na(y1, x[, 1] * x[, 2])) 712s > stopifnot(all.equal.na(y2, y1)) 712s > 712s > # Bug report 2014-03-25 ("all rows contains a zero") 712s > x <- matrix(c(0, 1, 1, 0), nrow = 2, ncol = 2) 712s > # To check names attribute 712s > dimnames <- list(letters[1:2], LETTERS[1:2]) 712s > y0 <- rowProds_R(x) 712s > print(y0) 712s [1] 0 0 712s > y1 <- rowProds(x) 712s > print(y1) 712s [1] 0 0 712s > y2 <- colProds(t(x)) 712s > print(y2) 712s [1] 0 0 712s > stopifnot(all.equal.na(y1, y0)) 712s > stopifnot(all.equal.na(y1, c(0, 0))) 712s > stopifnot(all.equal.na(y2, y1)) 712s > # Check names attribute 712s > dimnames(x) <- dimnames 712s > y0 <- rowProds_R(x, useNames = TRUE) 712s > print(y0) 712s a b 712s 0 0 712s > y1 <- rowProds(x, useNames = TRUE) 712s > print(y1) 712s a b 712s 0 0 712s > y2 <- colProds(t(x), useNames = TRUE) 712s > print(y2) 712s a b 712s 0 0 712s > stopifnot(all.equal.na(y1, y0)) 712s > stopifnot(all.equal.na(y2, y1)) 712s > 712s 712s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 712s Copyright (C) 2024 The R Foundation for Statistical Computing 712s Platform: arm-unknown-linux-gnueabihf (32-bit) 712s 712s R is free software and comes with ABSOLUTELY NO WARRANTY. 712s You are welcome to redistribute it under certain conditions. 712s Type 'license()' or 'licence()' for distribution details. 712s 712s R is a collaborative project with many contributors. 712s Type 'contributors()' for more information and 712s 'citation()' on how to cite R or R packages in publications. 712s 712s Type 'demo()' for some demos, 'help()' for on-line help, or 712s 'help.start()' for an HTML browser interface to help. 712s Type 'q()' to quit R. 712s 713s > library("matrixStats") 713s > 713s > rowProds_R <- function(x, FUN = prod, na.rm = FALSE, ..., useNames = NA) { 713s + res <- apply(x, MARGIN = 1L, FUN = FUN, na.rm = na.rm) 713s + if (is.na(useNames) || !useNames) names(res) <- NULL 713s + res 713s + } 713s > 713s > 713s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 713s > # Subsetted tests 713s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 713s > source("utils/validateIndicesFramework.R") 713s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 713s > storage.mode(x) <- "integer" 713s > 713s > # To check names attribute 713s > dimnames <- list(letters[1:6], LETTERS[1:6]) 713s > 713s > # Test with and without dimnames on x 713s > for (setDimnames in c(TRUE, FALSE)) { 713s + if (setDimnames) dimnames(x) <- dimnames 713s + else dimnames(x) <- NULL 713s + for (rows in index_cases) { 713s + for (cols in index_cases) { 713s + for (na.rm in c(TRUE, FALSE)) { 713s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 713s + validateIndicesTestMatrix(x, rows, cols, 713s + ftest = rowProds, fsure = rowProds_R, 713s + method = "expSumLog", 713s + FUN = product, na.rm = na.rm, useNames = useNames) 713s + validateIndicesTestMatrix(x, rows, cols, 713s + fcoltest = colProds, fsure = rowProds_R, 713s + method = "expSumLog", 713s + FUN = product, na.rm = na.rm, useNames = useNames) 713s + } 713s + } 713s + } 713s + } 713s + } 716s > 716s 716s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 716s Copyright (C) 2024 The R Foundation for Statistical Computing 716s Platform: arm-unknown-linux-gnueabihf (32-bit) 716s 716s R is free software and comes with ABSOLUTELY NO WARRANTY. 716s You are welcome to redistribute it under certain conditions. 716s Type 'license()' or 'licence()' for distribution details. 716s 716s R is a collaborative project with many contributors. 716s Type 'contributors()' for more information and 716s 'citation()' on how to cite R or R packages in publications. 716s 716s Type 'demo()' for some demos, 'help()' for on-line help, or 716s 'help.start()' for an HTML browser interface to help. 716s Type 'q()' to quit R. 716s 716s > library("matrixStats") 716s > 716s > ## Create isFALSE() if running on an old version of R 716s > if (!exists("isFALSE", mode="function")) { 716s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 716s + } 716s > 716s > rowQuantiles_R <- function(x, probs = c(0, 0.25, 0.50, 0.75, 1), na.rm = FALSE, drop = TRUE, type = 7L, ..., useNames = NA) { 716s + q <- apply(x, MARGIN = 1L, FUN = function(x, probs, na.rm) { 716s + if (!na.rm && any(is.na(x))) { 716s + na_value <- NA_real_ 716s + if (type != 7L) storage.mode(na_value) <- storage.mode(x) 716s + rep(na_value, times = length(probs)) 716s + } else { 716s + as.vector(quantile(x, probs = probs, na.rm = na.rm, type = type, names = FALSE, ...)) 716s + } 716s + }, probs = probs, na.rm = na.rm) 716s + 716s + if (!is.null(dim(q))) q <- t(q) 716s + else dim(q) <- c(nrow(x), length(probs)) 716s + 716s + colnames(q) <- matrixStats:::quantile_probs_names(probs) 716s + rownames(q) <- rownames(x) 716s + if (isFALSE(useNames)) dimnames(q) <- NULL 716s + 716s + if (drop) q <- drop(q) 716s + q 716s + } 716s > 716s > 716s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 716s > # Test with multiple quantiles 716s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 716s > for (mode in c("logical", "integer", "double")) { 716s + cat("mode: ", mode, "\n", sep = "") 716s + x <- matrix(1:40 + 0.1, nrow = 8, ncol = 5) 716s + storage.mode(x) <- mode 716s + dimnames <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 716s + str(x) 716s + 716s + probs <- c(0, 0.5, 1) 716s + # Test with and without dimnames on x 716s + for (setDimnames in c(TRUE, FALSE)) { 716s + if (setDimnames) dimnames(x) <- dimnames 716s + else dimnames(x) <- NULL 716s + # Check names attribute 716s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 716s + q0 <- rowQuantiles_R(x, probs = probs, useNames = useNames) 716s + print(q0) 716s + q1 <- rowQuantiles(x, probs = probs, useNames = useNames) 716s + print(q1) 716s + ## FIXME: Workaround for R (< 3.0.0) 716s + if (getRversion() < "3.0.0" && mode == "logical") storage.mode(q1) <- storage.mode(q0) 716s + stopifnot(all.equal(q1, q0)) 716s + q2 <- colQuantiles(t(x), probs = probs, useNames = useNames) 716s + ## FIXME: Workaround for R (< 3.0.0) 716s + if (getRversion() < "3.0.0" && mode == "logical") storage.mode(q2) <- storage.mode(q0) 716s + stopifnot(all.equal(q2, q0)) 716s + } 716s + } 716s + } # for (mode ...) 716s mode: logical 716s logi [1:8, 1:5] TRUE TRUE TRUE TRUE TRUE TRUE ... 716s 0% 50% 100% 716s a 1 1 1 716s b 1 1 1 716s c 1 1 1 716s d 1 1 1 716s e 1 1 1 716s f 1 1 1 716s g 1 1 1 716s h 1 1 1 716s 0% 50% 100% 716s a 1 1 1 716s b 1 1 1 716s c 1 1 1 716s d 1 1 1 716s e 1 1 1 716s f 1 1 1 716s g 1 1 1 716s h 1 1 1 717s [,1] [,2] [,3] 717s [1,] 1 1 1 717s [2,] 1 1 1 717s [3,] 1 1 1 717s [4,] 1 1 1 717s [5,] 1 1 1 717s [6,] 1 1 1 717s [7,] 1 1 1 717s [8,] 1 1 1 717s [,1] [,2] [,3] 717s [1,] 1 1 1 717s [2,] 1 1 1 717s [3,] 1 1 1 717s [4,] 1 1 1 717s [5,] 1 1 1 717s [6,] 1 1 1 717s [7,] 1 1 1 717s [8,] 1 1 1 717s 0% 50% 100% 717s [1,] 1 1 1 717s [2,] 1 1 1 717s [3,] 1 1 1 717s [4,] 1 1 1 717s [5,] 1 1 1 717s [6,] 1 1 1 717s [7,] 1 1 1 717s [8,] 1 1 1 717s 0% 50% 100% 717s [1,] 1 1 1 717s [2,] 1 1 1 717s [3,] 1 1 1 717s [4,] 1 1 1 717s [5,] 1 1 1 717s [6,] 1 1 1 717s [7,] 1 1 1 717s [8,] 1 1 1 717s [,1] [,2] [,3] 717s [1,] 1 1 1 717s [2,] 1 1 1 717s [3,] 1 1 1 717s [4,] 1 1 1 717s [5,] 1 1 1 717s [6,] 1 1 1 717s [7,] 1 1 1 717s [8,] 1 1 1 717s [,1] [,2] [,3] 717s [1,] 1 1 1 717s [2,] 1 1 1 717s [3,] 1 1 1 717s [4,] 1 1 1 717s [5,] 1 1 1 717s [6,] 1 1 1 717s [7,] 1 1 1 717s [8,] 1 1 1 717s mode: integer 717s int [1:8, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 717s 0% 50% 100% 717s a 1 17 33 717s b 2 18 34 717s c 3 19 35 717s d 4 20 36 717s e 5 21 37 717s f 6 22 38 717s g 7 23 39 717s h 8 24 40 717s 0% 50% 100% 717s a 1 17 33 717s b 2 18 34 717s c 3 19 35 717s d 4 20 36 717s e 5 21 37 717s f 6 22 38 717s g 7 23 39 717s h 8 24 40 717s [,1] [,2] [,3] 717s [1,] 1 17 33 717s [2,] 2 18 34 717s [3,] 3 19 35 717s [4,] 4 20 36 717s [5,] 5 21 37 717s [6,] 6 22 38 717s [7,] 7 23 39 717s [8,] 8 24 40 717s [,1] [,2] [,3] 717s [1,] 1 17 33 717s [2,] 2 18 34 717s [3,] 3 19 35 717s [4,] 4 20 36 717s [5,] 5 21 37 717s [6,] 6 22 38 717s [7,] 7 23 39 717s [8,] 8 24 40 717s 0% 50% 100% 717s [1,] 1 17 33 717s [2,] 2 18 34 717s [3,] 3 19 35 717s [4,] 4 20 36 717s [5,] 5 21 37 717s [6,] 6 22 38 717s [7,] 7 23 39 717s [8,] 8 24 40 717s 0% 50% 100% 717s [1,] 1 17 33 717s [2,] 2 18 34 717s [3,] 3 19 35 717s [4,] 4 20 36 717s [5,] 5 21 37 717s [6,] 6 22 38 717s [7,] 7 23 39 717s [8,] 8 24 40 717s [,1] [,2] [,3] 717s [1,] 1 17 33 717s [2,] 2 18 34 717s [3,] 3 19 35 717s [4,] 4 20 36 717s [5,] 5 21 37 717s [6,] 6 22 38 717s [7,] 7 23 39 717s [8,] 8 24 40 717s [,1] [,2] [,3] 717s [1,] 1 17 33 717s [2,] 2 18 34 717s [3,] 3 19 35 717s [4,] 4 20 36 717s [5,] 5 21 37 717s [6,] 6 22 38 717s [7,] 7 23 39 717s [8,] 8 24 40 717s mode: double 717s num [1:8, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 717s 0% 50% 100% 717s a 1.1 17.1 33.1 717s b 2.1 18.1 34.1 717s c 3.1 19.1 35.1 717s d 4.1 20.1 36.1 717s e 5.1 21.1 37.1 717s f 6.1 22.1 38.1 717s g 7.1 23.1 39.1 717s h 8.1 24.1 40.1 717s 0% 50% 100% 717s a 1.1 17.1 33.1 717s b 2.1 18.1 34.1 717s c 3.1 19.1 35.1 717s d 4.1 20.1 36.1 717s e 5.1 21.1 37.1 717s f 6.1 22.1 38.1 717s g 7.1 23.1 39.1 717s h 8.1 24.1 40.1 717s [,1] [,2] [,3] 717s [1,] 1.1 17.1 33.1 717s [2,] 2.1 18.1 34.1 717s [3,] 3.1 19.1 35.1 717s [4,] 4.1 20.1 36.1 717s [5,] 5.1 21.1 37.1 717s [6,] 6.1 22.1 38.1 717s [7,] 7.1 23.1 39.1 717s [8,] 8.1 24.1 40.1 717s [,1] [,2] [,3] 717s [1,] 1.1 17.1 33.1 717s [2,] 2.1 18.1 34.1 717s [3,] 3.1 19.1 35.1 717s [4,] 4.1 20.1 36.1 717s [5,] 5.1 21.1 37.1 717s [6,] 6.1 22.1 38.1 717s [7,] 7.1 23.1 39.1 717s [8,] 8.1 24.1 40.1 717s 0% 50% 100% 717s [1,] 1.1 17.1 33.1 717s [2,] 2.1 18.1 34.1 717s [3,] 3.1 19.1 35.1 717s [4,] 4.1 20.1 36.1 717s [5,] 5.1 21.1 37.1 717s [6,] 6.1 22.1 38.1 717s [7,] 7.1 23.1 39.1 717s [8,] 8.1 24.1 40.1 717s 0% 50% 100% 717s [1,] 1.1 17.1 33.1 717s [2,] 2.1 18.1 34.1 717s [3,] 3.1 19.1 35.1 717s [4,] 4.1 20.1 36.1 717s [5,] 5.1 21.1 37.1 717s [6,] 6.1 22.1 38.1 717s [7,] 7.1 23.1 39.1 717s [8,] 8.1 24.1 40.1 717s [,1] [,2] [,3] 717s [1,] 1.1 17.1 33.1 717s [2,] 2.1 18.1 34.1 717s [3,] 3.1 19.1 35.1 717s [4,] 4.1 20.1 36.1 717s [5,] 5.1 21.1 37.1 717s [6,] 6.1 22.1 38.1 717s [7,] 7.1 23.1 39.1 717s [8,] 8.1 24.1 40.1 717s [,1] [,2] [,3] 717s [1,] 1.1 17.1 33.1 717s [2,] 2.1 18.1 34.1 717s [3,] 3.1 19.1 35.1 717s [4,] 4.1 20.1 36.1 717s [5,] 5.1 21.1 37.1 717s [6,] 6.1 22.1 38.1 717s [7,] 7.1 23.1 39.1 717s [8,] 8.1 24.1 40.1 717s > 717s > 717s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 717s > # Test with a single quantile 717s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 717s > for (mode in c("logical", "integer", "double")) { 717s + cat("mode: ", mode, "\n", sep = "") 717s + x <- matrix(1:40, nrow = 8, ncol = 5) 717s + storage.mode(x) <- mode 717s + dimnames <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 717s + str(x) 717s + 717s + probs <- c(0.5) 717s + # Test with and without dimnames on x 717s + for (setDimnames in c(TRUE, FALSE)) { 717s + if (setDimnames) dimnames(x) <- dimnames 717s + else dimnames(x) <- NULL 717s + # Check names attribute 717s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 717s + q0 <- rowQuantiles_R(x, probs = probs, useNames = useNames) 717s + print(q0) 717s + q1 <- rowQuantiles(x, probs = probs, useNames = useNames) 717s + ## FIXME: Workaround for R (< 3.0.0) 717s + if (getRversion() < "3.0.0" && mode == "logical") storage.mode(q1) <- storage.mode(q0) 717s + print(q1) 717s + stopifnot(all.equal(q1, q0)) 717s + q2 <- colQuantiles(t(x), probs = probs, useNames = useNames) 717s + ## FIXME: Workaround for R (< 3.0.0) 717s + if (getRversion() < "3.0.0" && mode == "logical") storage.mode(q2) <- storage.mode(q0) 717s + stopifnot(all.equal(q2, q0)) 717s + } 717s + } 717s + } # for (mode ...) 717s mode: logical 717s logi [1:8, 1:5] TRUE TRUE TRUE TRUE TRUE TRUE ... 717s a b c d e f g h 717s 1 1 1 1 1 1 1 1 717s a b c d e f g h 717s 1 1 1 1 1 1 1 1 717s [1] 1 1 1 1 1 1 1 1 717s [1] 1 1 1 1 1 1 1 1 717s [1] 1 1 1 1 1 1 1 1 717s [1] 1 1 1 1 1 1 1 1 717s [1] 1 1 1 1 1 1 1 1 717s [1] 1 1 1 1 1 1 1 1 717s mode: integer 717s int [1:8, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 717s a b c d e f g h 717s 17 18 19 20 21 22 23 24 717s a b c d e f g h 717s 17 18 19 20 21 22 23 24 717s [1] 17 18 19 20 21 22 23 24 717s [1] 17 18 19 20 21 22 23 24 717s [1] 17 18 19 20 21 22 23 24 717s [1] 17 18 19 20 21 22 23 24 717s [1] 17 18 19 20 21 22 23 24 717s [1] 17 18 19 20 21 22 23 24 717s mode: double 717s num [1:8, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 717s a b c d e f g h 717s 17 18 19 20 21 22 23 24 717s a b c d e f g h 717s 17 18 19 20 21 22 23 24 717s [1] 17 18 19 20 21 22 23 24 717s [1] 17 18 19 20 21 22 23 24 717s [1] 17 18 19 20 21 22 23 24 717s [1] 17 18 19 20 21 22 23 24 717s [1] 17 18 19 20 21 22 23 24 717s [1] 17 18 19 20 21 22 23 24 717s > 717s > 717s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 717s > # Consistency checks 717s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 717s > set.seed(1) 717s > 717s > probs <- seq(from = 0, to = 1, by = 0.25) 717s > 717s > cat("Consistency checks:\n") 717s Consistency checks: 717s > n_sims <- if (Sys.getenv("_R_CHECK_USE_VALGRIND_") != "") 6L else 24L 717s > for (kk in seq_len(n_sims)) { 717s + cat("Random test #", kk, "\n", sep = "") 717s + 717s + # Simulate data in a matrix of any shape 717s + dim <- sample(20:60, size = 2L) 717s + n <- prod(dim) 717s + x <- rnorm(n, sd = 100) 717s + dim(x) <- dim 717s + dimnames <- lapply(dim(x), FUN = function(n) rep(letters, length.out = n)) 717s + 717s + # Add NAs? 717s + has_na <- ((kk %% 2) == 0L) 717s + if (has_na) { 717s + cat("Adding NAs\n") 717s + nna <- sample(n, size = 1) 717s + na_values <- c(NA_real_, NaN) 717s + t <- sample(na_values, size = nna, replace = TRUE) 717s + x[sample(length(x), size = nna)] <- t 717s + } 717s + 717s + # Logical, integer, or double? 717s + mode <- "numeric" 717s + if ((kk %% 6) %in% 1:2) { 717s + cat("Coercing to logical\n") 717s + mode <- "logical" 717s + } else if ((kk %% 6) %in% 3:4) { 717s + cat("Coercing to integers\n") 717s + mode <- "integer" 717s + } 717s + storage.mode(x) <- mode 717s + 717s + str(x) 717s + 717s + # rowQuantiles(): 717s + for (type in 1:9) { 717s + cat(sprintf("type=%d, has_na=%s:\n", type, has_na)) 717s + # Test with and without dimnames on x 717s + for (setDimnames in c(TRUE, FALSE)) { 717s + if (setDimnames) dimnames(x) <- dimnames 717s + else dimnames(x) <- NULL 717s + # Check names attribute 717s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 717s + q0 <- rowQuantiles_R(x, probs = probs, na.rm = has_na, type = type, useNames = useNames) 717s + q1 <- rowQuantiles(x, probs = probs, na.rm = has_na, type = type, useNames = useNames) 717s + ## FIXME: Workaround for R (< 3.0.0) 717s + if (getRversion() < "3.0.0" && mode == "logical" && !has_na && type == 7L) storage.mode(q1) <- storage.mode(q0) 717s + stopifnot(all.equal(q1, q0)) 717s + q2 <- colQuantiles(t(x), probs = probs, na.rm = has_na, type = type, useNames = useNames) 717s + ## FIXME: Workaround for R (< 3.0.0) 717s + if (getRversion() < "3.0.0" && mode == "logical" && !has_na && type == 7L) storage.mode(q2) <- storage.mode(q0) 717s + stopifnot(all.equal(q2, q0)) 717s + } 717s + } 717s + } 717s + } # for (kk ...) 717s Random test #1 717s Coercing to logical 717s logi [1:23, 1:58] TRUE TRUE TRUE TRUE TRUE TRUE ... 717s type=1, has_na=FALSE: 717s type=2, has_na=FALSE: 717s type=3, has_na=FALSE: 717s type=4, has_na=FALSE: 717s type=5, has_na=FALSE: 717s type=6, has_na=FALSE: 717s type=7, has_na=FALSE: 717s type=8, has_na=FALSE: 717s type=9, has_na=FALSE: 718s Random test #2 718s Adding NAs 718s Coercing to logical 718s logi [1:58, 1:33] TRUE TRUE TRUE TRUE TRUE NA ... 718s type=1, has_na=TRUE: 718s type=2, has_na=TRUE: 718s type=3, has_na=TRUE: 718s type=4, has_na=TRUE: 718s type=5, has_na=TRUE: 719s type=6, has_na=TRUE: 719s type=7, has_na=TRUE: 719s type=8, has_na=TRUE: 719s type=9, has_na=TRUE: 719s Random test #3 719s Coercing to integers 719s int [1:28, 1:60] 119 -164 115 -129 209 -175 2 -32 120 -28 ... 719s type=1, has_na=FALSE: 719s type=2, has_na=FALSE: 719s type=3, has_na=FALSE: 720s type=4, has_na=FALSE: 720s type=5, has_na=FALSE: 720s type=6, has_na=FALSE: 720s type=7, has_na=FALSE: 720s type=8, has_na=FALSE: 720s type=9, has_na=FALSE: 720s Random test #4 720s Adding NAs 720s Coercing to integers 720s int [1:54, 1:35] 147 11 116 -50 NA -69 132 NA 114 NA ... 720s type=1, has_na=TRUE: 720s type=2, has_na=TRUE: 721s type=3, has_na=TRUE: 721s type=4, has_na=TRUE: 721s type=5, has_na=TRUE: 721s type=6, has_na=TRUE: 721s type=7, has_na=TRUE: 721s type=8, has_na=TRUE: 722s type=9, has_na=TRUE: 722s Random test #5 722s num [1:39, 1:53] 5.94 -27.16 -30.78 173 126.05 ... 722s type=1, has_na=FALSE: 722s type=2, has_na=FALSE: 722s type=3, has_na=FALSE: 722s type=4, has_na=FALSE: 722s type=5, has_na=FALSE: 722s type=6, has_na=FALSE: 723s type=7, has_na=FALSE: 723s type=8, has_na=FALSE: 723s type=9, has_na=FALSE: 723s Random test #6 723s Adding NAs 723s num [1:46, 1:22] 197 -107 15 148 -110 ... 723s type=1, has_na=TRUE: 723s type=2, has_na=TRUE: 723s type=3, has_na=TRUE: 723s type=4, has_na=TRUE: 724s type=5, has_na=TRUE: 724s type=6, has_na=TRUE: 724s type=7, has_na=TRUE: 724s type=8, has_na=TRUE: 724s type=9, has_na=TRUE: 724s Random test #7 724s Coercing to logical 724s logi [1:21, 1:51] TRUE TRUE TRUE TRUE TRUE TRUE ... 724s type=1, has_na=FALSE: 724s type=2, has_na=FALSE: 724s type=3, has_na=FALSE: 725s type=4, has_na=FALSE: 725s type=5, has_na=FALSE: 725s type=6, has_na=FALSE: 725s type=7, has_na=FALSE: 725s type=8, has_na=FALSE: 725s type=9, has_na=FALSE: 725s Random test #8 725s Adding NAs 725s Coercing to logical 725s logi [1:33, 1:53] NA NA TRUE TRUE TRUE TRUE ... 725s type=1, has_na=TRUE: 725s type=2, has_na=TRUE: 725s type=3, has_na=TRUE: 725s type=4, has_na=TRUE: 725s type=5, has_na=TRUE: 726s type=6, has_na=TRUE: 726s type=7, has_na=TRUE: 726s type=8, has_na=TRUE: 726s type=9, has_na=TRUE: 726s Random test #9 726s Coercing to integers 726s int [1:53, 1:24] -73 10 -73 -5 44 -107 -100 95 58 -50 ... 726s type=1, has_na=FALSE: 726s type=2, has_na=FALSE: 726s type=3, has_na=FALSE: 726s type=4, has_na=FALSE: 727s type=5, has_na=FALSE: 727s type=6, has_na=FALSE: 727s type=7, has_na=FALSE: 727s type=8, has_na=FALSE: 727s type=9, has_na=FALSE: 727s Random test #10 727s Adding NAs 727s Coercing to integers 727s int [1:44, 1:20] NA -140 NA -57 -252 NA NA 20 NA NA ... 727s type=1, has_na=TRUE: 728s type=2, has_na=TRUE: 728s type=3, has_na=TRUE: 728s type=4, has_na=TRUE: 728s type=5, has_na=TRUE: 728s type=6, has_na=TRUE: 728s type=7, has_na=TRUE: 728s type=8, has_na=TRUE: 729s type=9, has_na=TRUE: 729s Random test #11 729s num [1:54, 1:23] -160.87 74.13 196.08 7.27 4.92 ... 729s type=1, has_na=FALSE: 729s type=2, has_na=FALSE: 729s type=3, has_na=FALSE: 729s type=4, has_na=FALSE: 729s type=5, has_na=FALSE: 730s type=6, has_na=FALSE: 730s type=7, has_na=FALSE: 730s type=8, has_na=FALSE: 730s type=9, has_na=FALSE: 730s Random test #12 730s Adding NAs 730s num [1:59, 1:27] -139.2 -86.3 NA -40.7 NA ... 730s type=1, has_na=TRUE: 730s type=2, has_na=TRUE: 731s type=3, has_na=TRUE: 731s type=4, has_na=TRUE: 731s type=5, has_na=TRUE: 731s type=6, has_na=TRUE: 731s type=7, has_na=TRUE: 732s type=8, has_na=TRUE: 732s type=9, has_na=TRUE: 732s Random test #13 732s Coercing to logical 732s logi [1:53, 1:60] TRUE TRUE TRUE TRUE TRUE TRUE ... 732s type=1, has_na=FALSE: 732s type=2, has_na=FALSE: 732s type=3, has_na=FALSE: 733s type=4, has_na=FALSE: 733s type=5, has_na=FALSE: 733s type=6, has_na=FALSE: 733s type=7, has_na=FALSE: 733s type=8, has_na=FALSE: 733s type=9, has_na=FALSE: 733s Random test #14 733s Adding NAs 733s Coercing to logical 733s logi [1:22, 1:57] TRUE TRUE TRUE TRUE TRUE TRUE ... 733s type=1, has_na=TRUE: 734s type=2, has_na=TRUE: 734s type=3, has_na=TRUE: 734s type=4, has_na=TRUE: 734s type=5, has_na=TRUE: 734s type=6, has_na=TRUE: 734s type=7, has_na=TRUE: 734s type=8, has_na=TRUE: 734s type=9, has_na=TRUE: 734s Random test #15 734s Coercing to integers 734s int [1:20, 1:34] 78 -41 183 190 -71 37 0 -4 -86 27 ... 734s type=1, has_na=FALSE: 734s type=2, has_na=FALSE: 734s type=3, has_na=FALSE: 734s type=4, has_na=FALSE: 734s type=5, has_na=FALSE: 735s type=6, has_na=FALSE: 735s type=7, has_na=FALSE: 735s type=8, has_na=FALSE: 735s type=9, has_na=FALSE: 735s Random test #16 735s Adding NAs 735s Coercing to integers 735s int [1:42, 1:37] NA 12 -15 41 -28 17 NA -74 NA NA ... 735s type=1, has_na=TRUE: 735s type=2, has_na=TRUE: 735s type=3, has_na=TRUE: 735s type=4, has_na=TRUE: 735s type=5, has_na=TRUE: 736s type=6, has_na=TRUE: 736s type=7, has_na=TRUE: 736s type=8, has_na=TRUE: 736s type=9, has_na=TRUE: 736s Random test #17 736s num [1:42, 1:29] -50.51 -6.51 -117.59 135.58 226.87 ... 736s type=1, has_na=FALSE: 736s type=2, has_na=FALSE: 736s type=3, has_na=FALSE: 737s type=4, has_na=FALSE: 737s type=5, has_na=FALSE: 737s type=6, has_na=FALSE: 737s type=7, has_na=FALSE: 737s type=8, has_na=FALSE: 737s type=9, has_na=FALSE: 737s Random test #18 737s Adding NAs 737s num [1:57, 1:39] 223 156.8 -44.6 -127.5 -147.7 ... 737s type=1, has_na=TRUE: 738s type=2, has_na=TRUE: 738s type=3, has_na=TRUE: 738s type=4, has_na=TRUE: 738s type=5, has_na=TRUE: 738s type=6, has_na=TRUE: 739s type=7, has_na=TRUE: 739s type=8, has_na=TRUE: 739s type=9, has_na=TRUE: 739s Random test #19 739s Coercing to logical 739s logi [1:52, 1:57] TRUE TRUE TRUE TRUE TRUE TRUE ... 739s type=1, has_na=FALSE: 739s type=2, has_na=FALSE: 740s type=3, has_na=FALSE: 740s type=4, has_na=FALSE: 740s type=5, has_na=FALSE: 740s type=6, has_na=FALSE: 740s type=7, has_na=FALSE: 740s type=8, has_na=FALSE: 741s type=9, has_na=FALSE: 741s Random test #20 741s Adding NAs 741s Coercing to logical 741s logi [1:25, 1:48] NA TRUE NA NA NA NA ... 741s type=1, has_na=TRUE: 741s type=2, has_na=TRUE: 741s type=3, has_na=TRUE: 741s type=4, has_na=TRUE: 741s type=5, has_na=TRUE: 741s type=6, has_na=TRUE: 741s type=7, has_na=TRUE: 741s type=8, has_na=TRUE: 742s type=9, has_na=TRUE: 742s Random test #21 742s Coercing to integers 742s int [1:53, 1:27] 3 -30 203 -49 19 -45 -138 28 46 -44 ... 742s type=1, has_na=FALSE: 742s type=2, has_na=FALSE: 742s type=3, has_na=FALSE: 742s type=4, has_na=FALSE: 742s type=5, has_na=FALSE: 743s type=6, has_na=FALSE: 743s type=7, has_na=FALSE: 743s type=8, has_na=FALSE: 743s type=9, has_na=FALSE: 743s Random test #22 743s Adding NAs 743s Coercing to integers 743s int [1:48, 1:36] -131 NA NA -201 45 -17 NA 57 NA NA ... 743s type=1, has_na=TRUE: 743s type=2, has_na=TRUE: 743s type=3, has_na=TRUE: 744s type=4, has_na=TRUE: 744s type=5, has_na=TRUE: 744s type=6, has_na=TRUE: 744s type=7, has_na=TRUE: 744s type=8, has_na=TRUE: 744s type=9, has_na=TRUE: 745s Random test #23 745s num [1:23, 1:43] -99.2 -68.8 -86.7 -104.2 48 ... 745s type=1, has_na=FALSE: 745s type=2, has_na=FALSE: 745s type=3, has_na=FALSE: 745s type=4, has_na=FALSE: 745s type=5, has_na=FALSE: 745s type=6, has_na=FALSE: 745s type=7, has_na=FALSE: 745s type=8, has_na=FALSE: 745s type=9, has_na=FALSE: 745s Random test #24 745s Adding NAs 745s num [1:53, 1:29] NaN -67.6 10.8 -88.4 130.1 ... 745s type=1, has_na=TRUE: 745s type=2, has_na=TRUE: 746s type=3, has_na=TRUE: 746s type=4, has_na=TRUE: 746s type=5, has_na=TRUE: 746s type=6, has_na=TRUE: 746s type=7, has_na=TRUE: 747s type=8, has_na=TRUE: 747s type=9, has_na=TRUE: 747s > 747s > 747s > 747s > for (mode in c("logical", "integer", "double")) { 747s + naValue <- NA_real_ 747s + storage.mode(naValue) <- mode 747s + 747s + someValue <- 1 747s + storage.mode(someValue) <- mode 747s + 747s + for (type in 1:9) { 747s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 747s + # All NA 747s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 747s + x <- matrix(naValue, nrow = 3L, ncol = 4L) 747s + dimnames <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 747s + # Test with and without dimnames on x 747s + for (setDimnames in c(TRUE, FALSE)) { 747s + if (setDimnames) dimnames(x) <- dimnames 747s + else dimnames(x) <- NULL 747s + # Check names attribute 747s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 747s + qr0 <- rowQuantiles_R(x, type = type, useNames = useNames) 747s + 747s + qr <- rowQuantiles(x, type = type, useNames = useNames) 747s + stopifnot(identical(qr, qr0)) 747s + 747s + # x <- matrix(naValue, nrow = 4L, ncol = 3L) 747s + qc <- colQuantiles(t(x), type = type, useNames = useNames) 747s + 747s + stopifnot(identical(qc, qr)) 747s + } 747s + } 747s + 747s + 747s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 747s + # Empty matrices 747s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 747s + probs <- c(0, 0.25, 0.75, 1) 747s + x <- matrix(naValue, nrow = 0L, ncol = 0L) 747s + dimnames(x) <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 747s + q <- rowQuantiles(x, probs = probs, type = type, useNames = TRUE) 747s + stopifnot(identical(dim(q), c(nrow(x), length(probs)))) 747s + q <- colQuantiles(x, probs = probs, type = type, useNames = TRUE) 747s + stopifnot(identical(dim(q), c(ncol(x), length(probs)))) 747s + 747s + x <- matrix(naValue, nrow = 2L, ncol = 0L) 747s + dimnames(x) <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 747s + q <- rowQuantiles(x, probs = probs, type = type, useNames = TRUE) 747s + stopifnot(identical(dim(q), c(nrow(x), length(probs)))) 747s + 747s + x <- matrix(naValue, nrow = 0L, ncol = 2L) 747s + dimnames(x) <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 747s + q <- colQuantiles(x, probs = probs, type = type, useNames = TRUE) 747s + stopifnot(identical(dim(q), c(ncol(x), length(probs)))) 747s + 747s + 747s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 747s + # Single column matrices 747s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 747s + probs <- c(0, 0.25, 0.75, 1) 747s + x <- matrix(someValue, nrow = 2L, ncol = 1L) 747s + dimnames(x) <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 747s + qr <- rowQuantiles(x, probs = probs, type = type, useNames = TRUE) 747s + print(qr) 747s + 747s + x <- matrix(someValue, nrow = 1L, ncol = 2L) 747s + dimnames(x) <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 747s + qc <- colQuantiles(x, probs = probs, type = type, useNames = TRUE) 747s + print(qc) 747s + 747s + stopifnot(identical(qc, qr)) 747s + } 747s + } 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s 0% 25% 75% 100% 747s a 1 1 1 1 747s b 1 1 1 1 747s > 747s 747s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 747s Copyright (C) 2024 The R Foundation for Statistical Computing 747s Platform: arm-unknown-linux-gnueabihf (32-bit) 747s 747s R is free software and comes with ABSOLUTELY NO WARRANTY. 747s You are welcome to redistribute it under certain conditions. 747s Type 'license()' or 'licence()' for distribution details. 747s 747s R is a collaborative project with many contributors. 747s Type 'contributors()' for more information and 747s 'citation()' on how to cite R or R packages in publications. 747s 747s Type 'demo()' for some demos, 'help()' for on-line help, or 747s 'help.start()' for an HTML browser interface to help. 747s Type 'q()' to quit R. 747s 748s > library("matrixStats") 748s > 748s > ## Create isFALSE() if running on an old version of R 748s > if (!exists("isFALSE", mode="function")) { 748s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 748s + } 748s > 748s > rowQuantiles_R <- function(x, probs, na.rm = FALSE, drop = TRUE, ..., useNames = NA) { 748s + q <- apply(x, MARGIN = 1L, FUN = function(x, probs, na.rm) { 748s + if (!na.rm && any(is.na(x))) { 748s + na_value <- NA_real_ 748s + storage.mode(na_value) <- storage.mode(x) 748s + rep(na_value, times = length(probs)) 748s + 748s + } else { 748s + as.vector(quantile(x, probs = probs, na.rm = na.rm, names = FALSE, ...)) 748s + } 748s + }, probs = probs, na.rm = na.rm) 748s + 748s + if (!is.null(dim(q))) q <- t(q) 748s + else dim(q) <- c(nrow(x), length(probs)) 748s + 748s + colnames(q) <- matrixStats:::quantile_probs_names(probs) 748s + rownames(q) <- rownames(x) 748s + if (isFALSE(useNames)) dimnames(q) <- NULL 748s + 748s + if (drop) q <- drop(q) 748s + q 748s + } 748s > 748s > 748s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 748s > # Subsetted tests 748s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 748s > source("utils/validateIndicesFramework.R") 748s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 748s > dimnames <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 748s > probs <- c(0, 0.25, 0.75, 1) 748s > # Test with and without dimnames on x 748s > for (setDimnames in c(TRUE, FALSE)) { 748s + if (setDimnames) dimnames(x) <- dimnames 748s + else dimnames(x) <- NULL 748s + 748s + count <- 0L 748s + for (rows in index_cases) { 748s + for (cols in index_cases) { 748s + count <- count + 1L 748s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 748s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 748s + useNames <- useNames[count %% length(useNames) + 1] 748s + 748s + validateIndicesTestMatrix(x, rows, cols, 748s + ftest = rowQuantiles, fsure = rowQuantiles_R, 748s + probs = probs, na.rm = na.rm, drop = FALSE, useNames = useNames) 748s + validateIndicesTestMatrix(x, rows, cols, 748s + fcoltest = colQuantiles, fsure = rowQuantiles_R, 748s + probs = probs, na.rm = na.rm, drop = FALSE, useNames = useNames) 748s + } 748s + } 748s + } 751s > 751s > 751s 751s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 751s Copyright (C) 2024 The R Foundation for Statistical Computing 751s Platform: arm-unknown-linux-gnueabihf (32-bit) 751s 751s R is free software and comes with ABSOLUTELY NO WARRANTY. 751s You are welcome to redistribute it under certain conditions. 751s Type 'license()' or 'licence()' for distribution details. 751s 751s R is a collaborative project with many contributors. 751s Type 'contributors()' for more information and 751s 'citation()' on how to cite R or R packages in publications. 751s 751s Type 'demo()' for some demos, 'help()' for on-line help, or 751s 'help.start()' for an HTML browser interface to help. 751s Type 'q()' to quit R. 751s 751s > library("matrixStats") 751s > 751s > rowMins_R <- function(x, ..., useNames = NA) { 751s + suppressWarnings({ 751s + res <- apply(x, MARGIN = 1L, FUN = min, ...) 751s + }) 751s + if (is.na(useNames) || !useNames) names(res) <- NULL 751s + res 751s + } # rowMins_R() 751s > 751s > rowMaxs_R <- function(x, ..., useNames = NA) { 751s + suppressWarnings({ 751s + res <- apply(x, MARGIN = 1L, FUN = max, ...) 751s + }) 751s + if (is.na(useNames) || !useNames) names(res) <- NULL 751s + res 751s + } # rowMaxs_R() 751s > 751s > rowRanges_R <- function(x, ..., useNames = NA) { 751s + suppressWarnings({ 751s + ans <- t(apply(x, MARGIN = 1L, FUN = range, ...)) 751s + }) 751s + 751s + # Preserve rownames attribute 751s + dim <- c(dim(x)[1], 2L) 751s + if (!isTRUE(all.equal(dim(ans), dim))) { 751s + dim(ans) <- dim 751s + rownames <- rownames(x) 751s + if (!is.null(dimnames)) rownames(ans) <- rownames 751s + } 751s + if (is.na(useNames) || !useNames) dimnames(ans) <- NULL 751s + ans 751s + } # rowRanges_R() 751s > 751s > 751s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 751s > # With and without some NAs 751s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 751s > for (mode in c("integer", "double")) { 751s + cat("mode: ", mode, "\n", sep = "") 751s + 751s + for (add_na in c(FALSE, TRUE)) { 751s + cat("add_na = ", add_na, "\n", sep = "") 751s + 751s + x <- matrix(1:50 + 0.1, nrow = 10L, ncol = 5L) 751s + if (add_na) { 751s + x[3:7, c(2, 4)] <- NA_real_ 751s + } 751s + storage.mode(x) <- mode 751s + str(x) 751s + 751s + # To check names attribute 751s + dimnames <- list(letters[1:10], LETTERS[1:5]) 751s + 751s + # Test with and without dimnames on x 751s + for (setDimnames in c(TRUE, FALSE)) { 751s + if (setDimnames) dimnames(x) <- dimnames 751s + else dimnames(x) <- NULL 751s + # Row/column extremes 751s + for (na.rm in c(FALSE, TRUE)) { 751s + # Check names attribute 751s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 751s + cat("na.rm = ", na.rm, "\n", sep = "") 751s + 751s + # Ranges 751s + cat("range:\n") 751s + r0 <- rowRanges_R(x, na.rm = na.rm, useNames = useNames) 751s + r1 <- rowRanges(x, na.rm = na.rm, useNames = useNames) 751s + r2 <- colRanges(t(x), na.rm = na.rm, useNames = useNames) 751s + stopifnot(all.equal(r1, r2)) 751s + stopifnot(all.equal(r1, r0)) 751s + 751s + # Min 751s + cat("min:\n") 751s + m0 <- rowMins_R(x, na.rm = na.rm, useNames = useNames) 751s + m1 <- rowMins(x, na.rm = na.rm, useNames = useNames) 751s + m2 <- colMins(t(x), na.rm = na.rm, useNames = useNames) 751s + stopifnot(all.equal(m1, m2)) 751s + stopifnot(all.equal(m1, m0)) 751s + 751s + # Max 751s + cat("max:\n") 751s + m0 <- rowMaxs_R(x, na.rm = na.rm, useNames = useNames) 751s + m1 <- rowMaxs(x, na.rm = na.rm, useNames = useNames) 751s + m2 <- colMaxs(t(x), na.rm = na.rm, useNames = useNames) 751s + stopifnot(all.equal(m1, m2)) 751s + stopifnot(all.equal(m1, m0)) 751s + } 751s + } 751s + } 751s + } # for (add_na ...) 751s + } # for (mode ...) 751s mode: integer 751s add_na = FALSE 751s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 751s na.rm = FALSE 751s range: 751s min: 751s max: 751s na.rm = FALSE 751s range: 751s min: 751s max: 751s na.rm = TRUE 751s range: 751s min: 751s max: 751s na.rm = TRUE 751s range: 751s min: 751s max: 751s na.rm = FALSE 751s range: 751s min: 751s max: 751s na.rm = FALSE 751s range: 751s min: 751s max: 751s na.rm = TRUE 751s range: 751s min: 751s max: 751s na.rm = TRUE 751s range: 751s min: 751s max: 751s add_na = TRUE 751s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 751s na.rm = FALSE 751s range: 751s min: 751s max: 751s na.rm = FALSE 751s range: 751s min: 751s max: 751s na.rm = TRUE 751s range: 751s min: 751s max: 751s na.rm = TRUE 751s range: 751s min: 751s max: 751s na.rm = FALSE 751s range: 751s min: 751s max: 751s na.rm = FALSE 751s range: 751s min: 751s max: 751s na.rm = TRUE 751s range: 751s min: 751s max: 751s na.rm = TRUE 751s range: 751s min: 751s max: 751s mode: double 751s add_na = FALSE 751s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 751s na.rm = FALSE 751s range: 751s min: 751s max: 751s na.rm = FALSE 751s range: 751s min: 751s max: 751s na.rm = TRUE 751s range: 751s min: 751s max: 751s na.rm = TRUE 751s range: 751s min: 751s max: 751s na.rm = FALSE 751s range: 751s min: 751s max: 751s na.rm = FALSE 751s range: 751s min: 751s max: 751s na.rm = TRUE 751s range: 751s min: 751s max: 751s na.rm = TRUE 751s range: 751s min: 751s max: 751s add_na = TRUE 751s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 751s na.rm = FALSE 751s range: 751s min: 751s max: 751s na.rm = FALSE 751s range: 751s min: 751s max: 751s na.rm = TRUE 751s range: 751s min: 751s max: 751s na.rm = TRUE 751s range: 752s min: 752s max: 752s na.rm = FALSE 752s range: 752s min: 752s max: 752s na.rm = FALSE 752s range: 752s min: 752s max: 752s na.rm = TRUE 752s range: 752s min: 752s max: 752s na.rm = TRUE 752s range: 752s min: 752s max: 752s > 752s > 752s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 752s > # All NAs 752s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 752s > for (mode in c("integer", "double")) { 752s + cat("mode: ", mode, "\n", sep = "") 752s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 752s + storage.mode(x) <- mode 752s + str(x) 752s + 752s + # Test with and without dimnames on x 752s + for (setDimnames in c(TRUE, FALSE)) { 752s + if (setDimnames) dimnames(x) <- dimnames 752s + else dimnames(x) <- NULL 752s + for (na.rm in c(FALSE, TRUE)) { 752s + # Check names attribute 752s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 752s + cat("na.rm = ", na.rm, "\n", sep = "") 752s + r0 <- rowRanges_R(x, na.rm = na.rm, useNames = useNames) 752s + r1 <- rowRanges(x, na.rm = na.rm, useNames = useNames) 752s + r2 <- colRanges(t(x), na.rm = na.rm, useNames = useNames) 752s + stopifnot(all.equal(r1, r2)) 752s + stopifnot(all.equal(r1, r0)) 752s + } 752s + } 752s + } 752s + } # for (mode ...) 752s mode: integer 752s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 752s na.rm = FALSE 752s na.rm = FALSE 752s na.rm = TRUE 752s na.rm = TRUE 752s na.rm = FALSE 752s na.rm = FALSE 752s na.rm = TRUE 752s na.rm = TRUE 752s mode: double 752s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 752s na.rm = FALSE 752s na.rm = FALSE 752s na.rm = TRUE 752s na.rm = TRUE 752s na.rm = FALSE 752s na.rm = FALSE 752s na.rm = TRUE 752s na.rm = TRUE 752s > 752s > 752s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 752s > # Special cases 752s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 752s > # Nx0 matrix 752s > x <- matrix(double(0L), nrow = 5L, ncol = 0L) 752s > r0 <- rowRanges_R(x) 752s > #r1 <- rowRanges(x) 752s > #r_truth <- matrix(c(Inf, -Inf), nrow = nrow(x), ncol = 2L, byrow = TRUE) 752s > #stopifnot(all.equal(r1, r_truth)) 752s > 752s > # 0xN matrix 752s > x <- t(x) 752s > #r1 <- colRanges(x) 752s > #stopifnot(all.equal(r1, r_truth)) 752s > 752s > # Nx1 matrix 752s > x <- matrix(1:5, nrow = 5L, ncol = 1L) 752s > # To check names attribute 752s > dimnames <- list(letters[1:5], "A") 752s > r1 <- rowRanges(x) 752s > r_truth <- matrix(1:5, nrow = nrow(x), ncol = 2L, byrow = FALSE) 752s > stopifnot(all.equal(r1, r_truth)) 752s > # Check names attribute 752s > dimnames(x) <- dimnames 752s > r0 <- rowRanges_R(x, useNames = TRUE) 752s > r1 <- rowRanges(x, useNames = TRUE) 752s > stopifnot(all.equal(r1, r0)) 752s > dimnames(x) <- NULL 752s > 752s > # 1xN matrix 752s > x <- t(x) 752s > r1 <- colRanges(x) 752s > stopifnot(all.equal(r1, r_truth)) 752s > # Check names attribute 752s > dimnames(x) <- list("a", LETTERS[1:5]) 752s > r1 <- colRanges(x, useNames = TRUE) 752s > stopifnot(identical(rownames(r1), colnames(x))) 752s > 752s > 752s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 752s > # Additional tests with NA_integer_, NA_real, NaN, -Inf, +Inf 752s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 752s > x <- matrix(1:12, nrow = 4L, ncol = 3L) 752s > 752s > na_list <- list( 752s + "integer" = matrix(1:12, nrow = 4L, ncol = 3L), 752s + "integer w/ NA" = matrix(NA_integer_, nrow = 4L, ncol = 3L), 752s + "real" = matrix(as.double(1:12), nrow = 4L, ncol = 3L), 752s + "real w/ NA" = matrix(NA_real_, nrow = 4L, ncol = 3L) 752s + ) 752s > 752s > na <- na_list[["real"]] 752s > na[2, 2] <- NA 752s > na_list[["real + NA cell"]] <- na 752s > 752s > na <- na_list[["real"]] 752s > na[2, ] <- NA 752s > na_list[["real + NA row"]] <- na 752s > 752s > na <- na_list[["real"]] 752s > na[2, ] <- NaN 752s > na_list[["real + NaN row"]] <- na 752s > 752s > na <- na_list[["real"]] 752s > na[2, 2] <- Inf 752s > na_list[["real + Inf cell"]] <- na 752s > 752s > na <- na_list[["real"]] 752s > na[2, ] <- Inf 752s > na_list[["real + Inf row"]] <- na 752s > 752s > na <- na_list[["real"]] 752s > na[2, 2] <- NaN 752s > na_list[["real + NaN cell"]] <- na 752s > 752s > na <- na_list[["real w/ NA"]] 752s > na[2, 2] <- NaN 752s > na_list[["real w/ NA + NaN cell"]] <- na 752s > 752s > na <- na_list[["real w/ NA"]] 752s > na[2, ] <- NaN 752s > na_list[["real w/ NA + NaN row"]] <- na 752s > 752s > # To check names attribute 752s > dimnames <- list(letters[1:4], LETTERS[1:3]) 752s > 752s > # Test with and without dimnames on x 752s > for (setDimnames in c(TRUE, FALSE)) { 752s + if (setDimnames) dimnames(x) <- dimnames 752s + else dimnames(x) <- NULL 752s + for (na.rm in c(FALSE, TRUE)) { 752s + for (name in names(na_list)) { 752s + # Check names attribute 752s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 752s + na <- na_list[[name]] 752s + cat(sprintf("%s (%s) w/ na.rm = %s:\n", name, typeof(na), na.rm)) 752s + print(na) 752s + 752s + cat(" min:\n") 752s + y0 <- rowMins_R(na, na.rm = na.rm, useNames = useNames) 752s + str(y0) 752s + y1 <- rowMins(na, na.rm = na.rm, useNames = useNames) 752s + str(y1) 752s + stopifnot(all.equal(y1, y0)) 752s + y1c <- colMins(t(na), na.rm = na.rm, useNames = useNames) 752s + str(y1c) 752s + stopifnot(all.equal(y1c, y1)) 752s + 752s + cat(" max:\n") 752s + y0 <- rowMaxs_R(na, na.rm = na.rm, useNames = useNames) 752s + str(y0) 752s + y1 <- rowMaxs(na, na.rm = na.rm, useNames = useNames) 752s + str(y1) 752s + stopifnot(all.equal(y1, y0)) 752s + y1c <- colMaxs(t(na), na.rm = na.rm, useNames = useNames) 752s + str(y1c) 752s + stopifnot(all.equal(y1c, y1)) 752s + 752s + cat(" range:\n") 752s + y0 <- rowRanges_R(na, na.rm = na.rm, useNames = useNames) 752s + str(y0) 752s + y1 <- rowRanges(na, na.rm = na.rm, useNames = useNames) 752s + str(y1) 752s + stopifnot(all.equal(y1, y0)) 752s + y1c <- colRanges(t(na), na.rm = na.rm, useNames = useNames) 752s + str(y1c) 752s + stopifnot(all.equal(y1c, y1)) 752s + } 752s + } # for (name ...) 752s + } # for (na.rm ...) 752s + } 752s integer (integer) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 6 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s int [1:4] 1 2 3 4 752s int [1:4] 1 2 3 4 752s int [1:4] 1 2 3 4 752s max: 752s int [1:4] 9 10 11 12 752s int [1:4] 9 10 11 12 752s int [1:4] 9 10 11 12 752s range: 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s integer (integer) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 6 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s int [1:4] 1 2 3 4 752s int [1:4] 1 2 3 4 752s int [1:4] 1 2 3 4 752s max: 752s int [1:4] 9 10 11 12 752s int [1:4] 9 10 11 12 752s int [1:4] 9 10 11 12 752s range: 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s integer w/ NA (integer) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NA NA NA 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s int [1:4] NA NA NA NA 752s int [1:4] NA NA NA NA 752s int [1:4] NA NA NA NA 752s max: 752s int [1:4] NA NA NA NA 752s int [1:4] NA NA NA NA 752s int [1:4] NA NA NA NA 752s range: 752s int [1:4, 1:2] NA NA NA NA NA NA NA NA 752s int [1:4, 1:2] NA NA NA NA NA NA NA NA 752s int [1:4, 1:2] NA NA NA NA NA NA NA NA 752s integer w/ NA (integer) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NA NA NA 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s int [1:4] NA NA NA NA 752s int [1:4] NA NA NA NA 752s int [1:4] NA NA NA NA 752s max: 752s int [1:4] NA NA NA NA 752s int [1:4] NA NA NA NA 752s int [1:4] NA NA NA NA 752s range: 752s int [1:4, 1:2] NA NA NA NA NA NA NA NA 752s int [1:4, 1:2] NA NA NA NA NA NA NA NA 752s int [1:4, 1:2] NA NA NA NA NA NA NA NA 752s real (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 6 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s max: 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s range: 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s real (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 6 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s max: 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s range: 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s real w/ NA (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NA NA NA 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s max: 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s range: 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s real w/ NA (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NA NA NA 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s max: 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s range: 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s real + NA cell (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 NA 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 NA 3 4 752s num [1:4] 1 NA 3 4 752s num [1:4] 1 NA 3 4 752s max: 752s num [1:4] 9 NA 11 12 752s num [1:4] 9 NA 11 12 752s num [1:4] 9 NA 11 12 752s range: 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s real + NA cell (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 NA 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 NA 3 4 752s num [1:4] 1 NA 3 4 752s num [1:4] 1 NA 3 4 752s max: 752s num [1:4] 9 NA 11 12 752s num [1:4] 9 NA 11 12 752s num [1:4] 9 NA 11 12 752s range: 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s real + NA row (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] NA NA NA 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 NA 3 4 752s num [1:4] 1 NA 3 4 752s num [1:4] 1 NA 3 4 752s max: 752s num [1:4] 9 NA 11 12 752s num [1:4] 9 NA 11 12 752s num [1:4] 9 NA 11 12 752s range: 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s real + NA row (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] NA NA NA 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 NA 3 4 752s num [1:4] 1 NA 3 4 752s num [1:4] 1 NA 3 4 752s max: 752s num [1:4] 9 NA 11 12 752s num [1:4] 9 NA 11 12 752s num [1:4] 9 NA 11 12 752s range: 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s real + NaN row (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] NaN NaN NaN 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 NaN 3 4 752s num [1:4] 1 NaN 3 4 752s num [1:4] 1 NaN 3 4 752s max: 752s num [1:4] 9 NaN 11 12 752s num [1:4] 9 NaN 11 12 752s num [1:4] 9 NaN 11 12 752s range: 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s real + NaN row (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] NaN NaN NaN 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 NaN 3 4 752s num [1:4] 1 NaN 3 4 752s num [1:4] 1 NaN 3 4 752s max: 752s num [1:4] 9 NaN 11 12 752s num [1:4] 9 NaN 11 12 752s num [1:4] 9 NaN 11 12 752s range: 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s real + Inf cell (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 Inf 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s max: 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s range: 752s num [1:4, 1:2] 1 2 3 4 9 ... 752s num [1:4, 1:2] 1 2 3 4 9 ... 752s num [1:4, 1:2] 1 2 3 4 9 ... 752s real + Inf cell (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 Inf 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s max: 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s range: 752s num [1:4, 1:2] 1 2 3 4 9 ... 752s num [1:4, 1:2] 1 2 3 4 9 ... 752s num [1:4, 1:2] 1 2 3 4 9 ... 752s real + Inf row (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] Inf Inf Inf 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s max: 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s range: 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s real + Inf row (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] Inf Inf Inf 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s max: 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s range: 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s real + NaN cell (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 NaN 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 NaN 3 4 752s num [1:4] 1 NaN 3 4 752s num [1:4] 1 NaN 3 4 752s max: 752s num [1:4] 9 NaN 11 12 752s num [1:4] 9 NaN 11 12 752s num [1:4] 9 NaN 11 12 752s range: 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s real + NaN cell (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 NaN 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 NaN 3 4 752s num [1:4] 1 NaN 3 4 752s num [1:4] 1 NaN 3 4 752s max: 752s num [1:4] 9 NaN 11 12 752s num [1:4] 9 NaN 11 12 752s num [1:4] 9 NaN 11 12 752s range: 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s real w/ NA + NaN cell (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NA NaN NA 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s max: 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s range: 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s real w/ NA + NaN cell (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NA NaN NA 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s max: 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s range: 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s real w/ NA + NaN row (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NaN NaN NaN 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] NA NaN NA NA 752s num [1:4] NA NaN NA NA 752s num [1:4] NA NaN NA NA 752s max: 752s num [1:4] NA NaN NA NA 752s num [1:4] NA NaN NA NA 752s num [1:4] NA NaN NA NA 752s range: 752s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 752s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 752s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 752s real w/ NA + NaN row (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NaN NaN NaN 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] NA NaN NA NA 752s num [1:4] NA NaN NA NA 752s num [1:4] NA NaN NA NA 752s max: 752s num [1:4] NA NaN NA NA 752s num [1:4] NA NaN NA NA 752s num [1:4] NA NaN NA NA 752s range: 752s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 752s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 752s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 752s integer (integer) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 6 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s int [1:4] 1 2 3 4 752s int [1:4] 1 2 3 4 752s int [1:4] 1 2 3 4 752s max: 752s int [1:4] 9 10 11 12 752s int [1:4] 9 10 11 12 752s int [1:4] 9 10 11 12 752s range: 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s integer (integer) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 6 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s int [1:4] 1 2 3 4 752s int [1:4] 1 2 3 4 752s int [1:4] 1 2 3 4 752s max: 752s int [1:4] 9 10 11 12 752s int [1:4] 9 10 11 12 752s int [1:4] 9 10 11 12 752s range: 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s integer w/ NA (integer) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NA NA NA 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s max: 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s range: 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s integer w/ NA (integer) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NA NA NA 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s max: 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s range: 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s real (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 6 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s max: 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s range: 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s real (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 6 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s max: 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s range: 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s real w/ NA (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NA NA NA 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s max: 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s range: 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s real w/ NA (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NA NA NA 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s max: 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s range: 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s real + NA cell (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 NA 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s max: 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s range: 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s real + NA cell (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 NA 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s max: 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s range: 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s real + NA row (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] NA NA NA 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s max: 752s num [1:4] 9 -Inf 11 12 752s num [1:4] 9 -Inf 11 12 752s num [1:4] 9 -Inf 11 12 752s range: 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s real + NA row (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] NA NA NA 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s max: 752s num [1:4] 9 -Inf 11 12 752s num [1:4] 9 -Inf 11 12 752s num [1:4] 9 -Inf 11 12 752s range: 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s real + NaN row (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] NaN NaN NaN 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s max: 752s num [1:4] 9 -Inf 11 12 752s num [1:4] 9 -Inf 11 12 752s num [1:4] 9 -Inf 11 12 752s range: 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s real + NaN row (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] NaN NaN NaN 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s max: 752s num [1:4] 9 -Inf 11 12 752s num [1:4] 9 -Inf 11 12 752s num [1:4] 9 -Inf 11 12 752s range: 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s real + Inf cell (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 Inf 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s max: 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s range: 752s num [1:4, 1:2] 1 2 3 4 9 ... 752s num [1:4, 1:2] 1 2 3 4 9 ... 752s num [1:4, 1:2] 1 2 3 4 9 ... 752s real + Inf cell (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 Inf 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s max: 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s range: 752s num [1:4, 1:2] 1 2 3 4 9 ... 752s num [1:4, 1:2] 1 2 3 4 9 ... 752s num [1:4, 1:2] 1 2 3 4 9 ... 752s real + Inf row (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] Inf Inf Inf 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s max: 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s range: 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s real + Inf row (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] Inf Inf Inf 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s max: 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s range: 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s real + NaN cell (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 NaN 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s max: 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s range: 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s real + NaN cell (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 NaN 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s max: 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s range: 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s real w/ NA + NaN cell (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NA NaN NA 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s max: 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s range: 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s real w/ NA + NaN cell (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NA NaN NA 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s max: 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s range: 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s real w/ NA + NaN row (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NaN NaN NaN 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s max: 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s range: 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s real w/ NA + NaN row (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NaN NaN NaN 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s max: 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s range: 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s integer (integer) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 6 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s int [1:4] 1 2 3 4 752s int [1:4] 1 2 3 4 752s int [1:4] 1 2 3 4 752s max: 752s int [1:4] 9 10 11 12 752s int [1:4] 9 10 11 12 752s int [1:4] 9 10 11 12 752s range: 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s integer (integer) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 6 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s int [1:4] 1 2 3 4 752s int [1:4] 1 2 3 4 752s int [1:4] 1 2 3 4 752s max: 752s int [1:4] 9 10 11 12 752s int [1:4] 9 10 11 12 752s int [1:4] 9 10 11 12 752s range: 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s integer w/ NA (integer) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NA NA NA 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s int [1:4] NA NA NA NA 752s int [1:4] NA NA NA NA 752s int [1:4] NA NA NA NA 752s max: 752s int [1:4] NA NA NA NA 752s int [1:4] NA NA NA NA 752s int [1:4] NA NA NA NA 752s range: 752s int [1:4, 1:2] NA NA NA NA NA NA NA NA 752s int [1:4, 1:2] NA NA NA NA NA NA NA NA 752s int [1:4, 1:2] NA NA NA NA NA NA NA NA 752s integer w/ NA (integer) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NA NA NA 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s int [1:4] NA NA NA NA 752s int [1:4] NA NA NA NA 752s int [1:4] NA NA NA NA 752s max: 752s int [1:4] NA NA NA NA 752s int [1:4] NA NA NA NA 752s int [1:4] NA NA NA NA 752s range: 752s int [1:4, 1:2] NA NA NA NA NA NA NA NA 752s int [1:4, 1:2] NA NA NA NA NA NA NA NA 752s int [1:4, 1:2] NA NA NA NA NA NA NA NA 752s real (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 6 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s max: 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s range: 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s real (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 6 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s max: 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s range: 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s real w/ NA (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NA NA NA 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s max: 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s range: 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s real w/ NA (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NA NA NA 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s max: 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s range: 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s real + NA cell (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 NA 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 NA 3 4 752s num [1:4] 1 NA 3 4 752s num [1:4] 1 NA 3 4 752s max: 752s num [1:4] 9 NA 11 12 752s num [1:4] 9 NA 11 12 752s num [1:4] 9 NA 11 12 752s range: 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s real + NA cell (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 NA 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 NA 3 4 752s num [1:4] 1 NA 3 4 752s num [1:4] 1 NA 3 4 752s max: 752s num [1:4] 9 NA 11 12 752s num [1:4] 9 NA 11 12 752s num [1:4] 9 NA 11 12 752s range: 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s real + NA row (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] NA NA NA 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 NA 3 4 752s num [1:4] 1 NA 3 4 752s num [1:4] 1 NA 3 4 752s max: 752s num [1:4] 9 NA 11 12 752s num [1:4] 9 NA 11 12 752s num [1:4] 9 NA 11 12 752s range: 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s real + NA row (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] NA NA NA 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 NA 3 4 752s num [1:4] 1 NA 3 4 752s num [1:4] 1 NA 3 4 752s max: 752s num [1:4] 9 NA 11 12 752s num [1:4] 9 NA 11 12 752s num [1:4] 9 NA 11 12 752s range: 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 752s real + NaN row (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] NaN NaN NaN 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 NaN 3 4 752s num [1:4] 1 NaN 3 4 752s num [1:4] 1 NaN 3 4 752s max: 752s num [1:4] 9 NaN 11 12 752s num [1:4] 9 NaN 11 12 752s num [1:4] 9 NaN 11 12 752s range: 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s real + NaN row (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] NaN NaN NaN 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 NaN 3 4 752s num [1:4] 1 NaN 3 4 752s num [1:4] 1 NaN 3 4 752s max: 752s num [1:4] 9 NaN 11 12 752s num [1:4] 9 NaN 11 12 752s num [1:4] 9 NaN 11 12 752s range: 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s real + Inf cell (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 Inf 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s max: 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s range: 752s num [1:4, 1:2] 1 2 3 4 9 ... 752s num [1:4, 1:2] 1 2 3 4 9 ... 752s num [1:4, 1:2] 1 2 3 4 9 ... 752s real + Inf cell (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 Inf 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s max: 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s range: 752s num [1:4, 1:2] 1 2 3 4 9 ... 752s num [1:4, 1:2] 1 2 3 4 9 ... 752s num [1:4, 1:2] 1 2 3 4 9 ... 752s real + Inf row (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] Inf Inf Inf 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s max: 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s range: 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s real + Inf row (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] Inf Inf Inf 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s max: 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s num [1:4] 9 Inf 11 12 752s range: 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s real + NaN cell (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 NaN 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 NaN 3 4 752s num [1:4] 1 NaN 3 4 752s num [1:4] 1 NaN 3 4 752s max: 752s num [1:4] 9 NaN 11 12 752s num [1:4] 9 NaN 11 12 752s num [1:4] 9 NaN 11 12 752s range: 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s real + NaN cell (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 NaN 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 NaN 3 4 752s num [1:4] 1 NaN 3 4 752s num [1:4] 1 NaN 3 4 752s max: 752s num [1:4] 9 NaN 11 12 752s num [1:4] 9 NaN 11 12 752s num [1:4] 9 NaN 11 12 752s range: 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 752s real w/ NA + NaN cell (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NA NaN NA 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s max: 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s range: 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s real w/ NA + NaN cell (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NA NaN NA 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s max: 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s num [1:4] NA NA NA NA 752s range: 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s num [1:4, 1:2] NA NA NA NA NA NA NA NA 752s real w/ NA + NaN row (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NaN NaN NaN 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] NA NaN NA NA 752s num [1:4] NA NaN NA NA 752s num [1:4] NA NaN NA NA 752s max: 752s num [1:4] NA NaN NA NA 752s num [1:4] NA NaN NA NA 752s num [1:4] NA NaN NA NA 752s range: 752s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 752s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 752s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 752s real w/ NA + NaN row (double) w/ na.rm = FALSE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NaN NaN NaN 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] NA NaN NA NA 752s num [1:4] NA NaN NA NA 752s num [1:4] NA NaN NA NA 752s max: 752s num [1:4] NA NaN NA NA 752s num [1:4] NA NaN NA NA 752s num [1:4] NA NaN NA NA 752s range: 752s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 752s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 752s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 752s integer (integer) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 6 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s int [1:4] 1 2 3 4 752s int [1:4] 1 2 3 4 752s int [1:4] 1 2 3 4 752s max: 752s int [1:4] 9 10 11 12 752s int [1:4] 9 10 11 12 752s int [1:4] 9 10 11 12 752s range: 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s integer (integer) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 6 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s int [1:4] 1 2 3 4 752s int [1:4] 1 2 3 4 752s int [1:4] 1 2 3 4 752s max: 752s int [1:4] 9 10 11 12 752s int [1:4] 9 10 11 12 752s int [1:4] 9 10 11 12 752s range: 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s int [1:4, 1:2] 1 2 3 4 9 10 11 12 752s integer w/ NA (integer) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NA NA NA 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s max: 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s range: 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s integer w/ NA (integer) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NA NA NA 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s max: 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s range: 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s real (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 6 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s max: 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s range: 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s real (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 6 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s max: 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s range: 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s real w/ NA (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NA NA NA 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s max: 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s range: 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s real w/ NA (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] NA NA NA 752s [2,] NA NA NA 752s [3,] NA NA NA 752s [4,] NA NA NA 752s min: 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s num [1:4] Inf Inf Inf Inf 752s max: 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s num [1:4] -Inf -Inf -Inf -Inf 752s range: 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 752s real + NA cell (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 NA 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s max: 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s range: 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s real + NA cell (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] 2 NA 10 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s num [1:4] 1 2 3 4 752s max: 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s num [1:4] 9 10 11 12 752s range: 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s num [1:4, 1:2] 1 2 3 4 9 10 11 12 752s real + NA row (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] NA NA NA 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s max: 752s num [1:4] 9 -Inf 11 12 752s num [1:4] 9 -Inf 11 12 752s num [1:4] 9 -Inf 11 12 752s range: 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s real + NA row (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] NA NA NA 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s max: 752s num [1:4] 9 -Inf 11 12 752s num [1:4] 9 -Inf 11 12 752s num [1:4] 9 -Inf 11 12 752s range: 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s num [1:4, 1:2] 1 Inf 3 4 9 ... 752s real + NaN row (double) w/ na.rm = TRUE: 752s [,1] [,2] [,3] 752s [1,] 1 5 9 752s [2,] NaN NaN NaN 752s [3,] 3 7 11 752s [4,] 4 8 12 752s min: 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s num [1:4] 1 Inf 3 4 752s max: 753s num [1:4] 9 -Inf 11 12 753s num [1:4] 9 -Inf 11 12 753s num [1:4] 9 -Inf 11 12 753s range: 753s num [1:4, 1:2] 1 Inf 3 4 9 ... 753s num [1:4, 1:2] 1 Inf 3 4 9 ... 753s num [1:4, 1:2] 1 Inf 3 4 9 ... 753s real + NaN row (double) w/ na.rm = TRUE: 753s [,1] [,2] [,3] 753s [1,] 1 5 9 753s [2,] NaN NaN NaN 753s [3,] 3 7 11 753s [4,] 4 8 12 753s min: 753s num [1:4] 1 Inf 3 4 753s num [1:4] 1 Inf 3 4 753s num [1:4] 1 Inf 3 4 753s max: 753s num [1:4] 9 -Inf 11 12 753s num [1:4] 9 -Inf 11 12 753s num [1:4] 9 -Inf 11 12 753s range: 753s num [1:4, 1:2] 1 Inf 3 4 9 ... 753s num [1:4, 1:2] 1 Inf 3 4 9 ... 753s num [1:4, 1:2] 1 Inf 3 4 9 ... 753s real + Inf cell (double) w/ na.rm = TRUE: 753s [,1] [,2] [,3] 753s [1,] 1 5 9 753s [2,] 2 Inf 10 753s [3,] 3 7 11 753s [4,] 4 8 12 753s min: 753s num [1:4] 1 2 3 4 753s num [1:4] 1 2 3 4 753s num [1:4] 1 2 3 4 753s max: 753s num [1:4] 9 Inf 11 12 753s num [1:4] 9 Inf 11 12 753s num [1:4] 9 Inf 11 12 753s range: 753s num [1:4, 1:2] 1 2 3 4 9 ... 753s num [1:4, 1:2] 1 2 3 4 9 ... 753s num [1:4, 1:2] 1 2 3 4 9 ... 753s real + Inf cell (double) w/ na.rm = TRUE: 753s [,1] [,2] [,3] 753s [1,] 1 5 9 753s [2,] 2 Inf 10 753s [3,] 3 7 11 753s [4,] 4 8 12 753s min: 753s num [1:4] 1 2 3 4 753s num [1:4] 1 2 3 4 753s num [1:4] 1 2 3 4 753s max: 753s num [1:4] 9 Inf 11 12 753s num [1:4] 9 Inf 11 12 753s num [1:4] 9 Inf 11 12 753s range: 753s num [1:4, 1:2] 1 2 3 4 9 ... 753s num [1:4, 1:2] 1 2 3 4 9 ... 753s num [1:4, 1:2] 1 2 3 4 9 ... 753s real + Inf row (double) w/ na.rm = TRUE: 753s [,1] [,2] [,3] 753s [1,] 1 5 9 753s [2,] Inf Inf Inf 753s [3,] 3 7 11 753s [4,] 4 8 12 753s min: 753s num [1:4] 1 Inf 3 4 753s num [1:4] 1 Inf 3 4 753s num [1:4] 1 Inf 3 4 753s max: 753s num [1:4] 9 Inf 11 12 753s num [1:4] 9 Inf 11 12 753s num [1:4] 9 Inf 11 12 753s range: 753s num [1:4, 1:2] 1 Inf 3 4 9 ... 753s num [1:4, 1:2] 1 Inf 3 4 9 ... 753s num [1:4, 1:2] 1 Inf 3 4 9 ... 753s real + Inf row (double) w/ na.rm = TRUE: 753s [,1] [,2] [,3] 753s [1,] 1 5 9 753s [2,] Inf Inf Inf 753s [3,] 3 7 11 753s [4,] 4 8 12 753s min: 753s num [1:4] 1 Inf 3 4 753s num [1:4] 1 Inf 3 4 753s num [1:4] 1 Inf 3 4 753s max: 753s num [1:4] 9 Inf 11 12 753s num [1:4] 9 Inf 11 12 753s num [1:4] 9 Inf 11 12 753s range: 753s num [1:4, 1:2] 1 Inf 3 4 9 ... 753s num [1:4, 1:2] 1 Inf 3 4 9 ... 753s num [1:4, 1:2] 1 Inf 3 4 9 ... 753s real + NaN cell (double) w/ na.rm = TRUE: 753s [,1] [,2] [,3] 753s [1,] 1 5 9 753s [2,] 2 NaN 10 753s [3,] 3 7 11 753s [4,] 4 8 12 753s min: 753s num [1:4] 1 2 3 4 753s num [1:4] 1 2 3 4 753s num [1:4] 1 2 3 4 753s max: 753s num [1:4] 9 10 11 12 753s num [1:4] 9 10 11 12 753s num [1:4] 9 10 11 12 753s range: 753s num [1:4, 1:2] 1 2 3 4 9 10 11 12 753s num [1:4, 1:2] 1 2 3 4 9 10 11 12 753s num [1:4, 1:2] 1 2 3 4 9 10 11 12 753s real + NaN cell (double) w/ na.rm = TRUE: 753s [,1] [,2] [,3] 753s [1,] 1 5 9 753s [2,] 2 NaN 10 753s [3,] 3 7 11 753s [4,] 4 8 12 753s min: 753s num [1:4] 1 2 3 4 753s num [1:4] 1 2 3 4 753s num [1:4] 1 2 3 4 753s max: 753s num [1:4] 9 10 11 12 753s num [1:4] 9 10 11 12 753s num [1:4] 9 10 11 12 753s range: 753s num [1:4, 1:2] 1 2 3 4 9 10 11 12 753s num [1:4, 1:2] 1 2 3 4 9 10 11 12 753s num [1:4, 1:2] 1 2 3 4 9 10 11 12 753s real w/ NA + NaN cell (double) w/ na.rm = TRUE: 753s [,1] [,2] [,3] 753s [1,] NA NA NA 753s [2,] NA NaN NA 753s [3,] NA NA NA 753s [4,] NA NA NA 753s min: 753s num [1:4] Inf Inf Inf Inf 753s num [1:4] Inf Inf Inf Inf 753s num [1:4] Inf Inf Inf Inf 753s max: 753s num [1:4] -Inf -Inf -Inf -Inf 753s num [1:4] -Inf -Inf -Inf -Inf 753s num [1:4] -Inf -Inf -Inf -Inf 753s range: 753s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 753s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 753s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 753s real w/ NA + NaN cell (double) w/ na.rm = TRUE: 753s [,1] [,2] [,3] 753s [1,] NA NA NA 753s [2,] NA NaN NA 753s [3,] NA NA NA 753s [4,] NA NA NA 753s min: 753s num [1:4] Inf Inf Inf Inf 753s num [1:4] Inf Inf Inf Inf 753s num [1:4] Inf Inf Inf Inf 753s max: 753s num [1:4] -Inf -Inf -Inf -Inf 753s num [1:4] -Inf -Inf -Inf -Inf 753s num [1:4] -Inf -Inf -Inf -Inf 753s range: 753s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 753s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 753s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 753s real w/ NA + NaN row (double) w/ na.rm = TRUE: 753s [,1] [,2] [,3] 753s [1,] NA NA NA 753s [2,] NaN NaN NaN 753s [3,] NA NA NA 753s [4,] NA NA NA 753s min: 753s num [1:4] Inf Inf Inf Inf 753s num [1:4] Inf Inf Inf Inf 753s num [1:4] Inf Inf Inf Inf 753s max: 753s num [1:4] -Inf -Inf -Inf -Inf 753s num [1:4] -Inf -Inf -Inf -Inf 753s num [1:4] -Inf -Inf -Inf -Inf 753s range: 753s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 753s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 753s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 753s real w/ NA + NaN row (double) w/ na.rm = TRUE: 753s [,1] [,2] [,3] 753s [1,] NA NA NA 753s [2,] NaN NaN NaN 753s [3,] NA NA NA 753s [4,] NA NA NA 753s min: 753s num [1:4] Inf Inf Inf Inf 753s num [1:4] Inf Inf Inf Inf 753s num [1:4] Inf Inf Inf Inf 753s max: 753s num [1:4] -Inf -Inf -Inf -Inf 753s num [1:4] -Inf -Inf -Inf -Inf 753s num [1:4] -Inf -Inf -Inf -Inf 753s range: 753s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 753s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 753s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 753s > 753s 753s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 753s Copyright (C) 2024 The R Foundation for Statistical Computing 753s Platform: arm-unknown-linux-gnueabihf (32-bit) 753s 753s R is free software and comes with ABSOLUTELY NO WARRANTY. 753s You are welcome to redistribute it under certain conditions. 753s Type 'license()' or 'licence()' for distribution details. 753s 753s R is a collaborative project with many contributors. 753s Type 'contributors()' for more information and 753s 'citation()' on how to cite R or R packages in publications. 753s 753s Type 'demo()' for some demos, 'help()' for on-line help, or 753s 'help.start()' for an HTML browser interface to help. 753s Type 'q()' to quit R. 753s 766s > library("matrixStats") 766s > 766s > rowMins_R <- function(x, ..., useNames = NA) { 766s + suppressWarnings({ 766s + res <- apply(x, MARGIN = 1L, FUN = min, ...) 766s + }) 766s + if (is.na(useNames) || !useNames) names(res) <- NULL 766s + res 766s + } # rowMins_R() 766s > 766s > rowMaxs_R <- function(x, ..., useNames = NA) { 766s + suppressWarnings({ 766s + res <- apply(x, MARGIN = 1L, FUN = max, ...) 766s + }) 766s + if (is.na(useNames) || !useNames) names(res) <- NULL 766s + res 766s + } # rowMaxs_R() 766s > 766s > rowRanges_R <- function(x, ..., useNames = NA) { 766s + suppressWarnings({ 766s + ans <- t(apply(x, MARGIN = 1L, FUN = range, ...)) 766s + }) 766s + 766s + # Preserve rownames attribute 766s + dim <- c(dim(x)[1], 2L) 766s + if (!isTRUE(all.equal(dim(ans), dim))) { 766s + dim(ans) <- dim 766s + rownames <- rownames(x) 766s + if (!is.null(dimnames)) rownames(ans) <- rownames 766s + } 766s + if (is.na(useNames) || !useNames) dimnames(ans) <- NULL 766s + ans 766s + } # rowRanges_R() 766s > 766s > 766s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 766s > # Subsetted tests 766s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 766s > source("utils/validateIndicesFramework.R") 766s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 766s > storage.mode(x) <- "integer" 766s > 766s > # To check rownames/names attributes 766s > dimnames <- list(letters[1:6], LETTERS[1:6]) 766s > 766s > # Test with and without dimnames on x 766s > for (setDimnames in c(TRUE, FALSE)) { 766s + if (setDimnames) dimnames(x) <- dimnames 766s + else dimnames(x) <- NULL 766s + 766s + count <- 0L 766s + for (rows in index_cases) { 766s + for (cols in index_cases) { 766s + count <- count + 1L 766s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 766s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 766s + useNames <- useNames[count %% length(useNames) + 1] 766s + 766s + validateIndicesTestMatrix(x, rows, cols, 766s + ftest = rowRanges, fsure = rowRanges_R, 766s + na.rm = na.rm, useNames = useNames) 766s + validateIndicesTestMatrix(x, rows, cols, 766s + ftest = rowMins, fsure = rowMins_R, 766s + na.rm = na.rm, useNames = useNames) 766s + validateIndicesTestMatrix(x, rows, cols, 766s + ftest = rowMaxs, fsure = rowMaxs_R, 766s + na.rm = na.rm, useNames = useNames) 766s + 766s + validateIndicesTestMatrix(x, rows, cols, 766s + fcoltest = colRanges, fsure = rowRanges_R, 766s + na.rm = na.rm, useNames = useNames) 766s + validateIndicesTestMatrix(x, rows, cols, 766s + fcoltest = colMins, fsure = rowMins_R, 766s + na.rm = na.rm, useNames = useNames) 766s + validateIndicesTestMatrix(x, rows, cols, 766s + fcoltest = colMaxs, fsure = rowMaxs_R, 766s + na.rm = na.rm, useNames = useNames) 766s + } 766s + } 766s + } 769s > 770s 770s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 770s Copyright (C) 2024 The R Foundation for Statistical Computing 770s Platform: arm-unknown-linux-gnueabihf (32-bit) 770s 770s R is free software and comes with ABSOLUTELY NO WARRANTY. 770s You are welcome to redistribute it under certain conditions. 770s Type 'license()' or 'licence()' for distribution details. 770s 770s R is a collaborative project with many contributors. 770s Type 'contributors()' for more information and 770s 'citation()' on how to cite R or R packages in publications. 770s 770s Type 'demo()' for some demos, 'help()' for on-line help, or 770s 'help.start()' for an HTML browser interface to help. 770s Type 'q()' to quit R. 770s 770s > library("matrixStats") 770s > 770s > dense_rank <- function(x) match(x, table = sort(unique(x))) 770s > 770s > rowRanks_R <- function(x, ties.method, ..., useNames = NA) { 770s + if (ties.method == "dense") { 770s + res <- t(apply(x, MARGIN = 1L, FUN = dense_rank)) 770s + } else { 770s + res <- t(apply(x, MARGIN = 1L, FUN = rank, na.last = "keep", ties.method = ties.method)) 770s + } 770s + 770s + # Preserve dimnames attribute? 770s + dim(res) <- dim(x) 770s + dimnames(res) <- if (isTRUE(useNames)) dimnames(x) else NULL 770s + 770s + res 770s + } 770s > 770s > colRanks_R <- function(x, ties.method, preserveShape = FALSE, ..., useNames = NA) { 770s + if (ties.method == "dense") { 770s + res <- t(apply(x, MARGIN = 2L, FUN = dense_rank)) 770s + } else { 770s + res <- t(apply(x, MARGIN = 2L, FUN = rank, na.last = "keep", ties.method = ties.method)) 770s + } 770s + 770s + # Preserve dimnames attribute? 770s + tx <- t(x) 770s + dim(res) <- dim(tx) 770s + dimnames(res) <- if (isTRUE(useNames)) dimnames(tx) else NULL 770s + 770s + if (preserveShape) res <- t(res) 770s + res 770s + } 770s > 770s > set.seed(1) 770s > 770s > cat("Consistency checks:\n") 770s Consistency checks: 770s > xs <- vector("list", length = 4L) 770s > for (kk in 1:4) { 770s + 770s + # Simulate data in a matrix of any shape 770s + dim <- sample(40:80, size = 2L) 770s + n <- prod(dim) 770s + x <- rnorm(n, sd = 10) 770s + dim(x) <- dim 770s + 770s + # Add NAs? 770s + if ((kk %% 4) %in% c(3, 0)) { 770s + cat("Adding NAs\n") 770s + nna <- sample(n, size = 1L) 770s + x[sample(length(x), size = nna)] <- NA_real_ 770s + } 770s + 770s + # Integer or double? 770s + if ((kk %% 4) %in% c(2, 0)) { 770s + cat("Coercing to integers\n") 770s + storage.mode(x) <- "integer" 770s + } 770s + 770s + xs[[kk]] <- x 770s + } # for (kk ...) 770s Coercing to integers 770s Adding NAs 770s Adding NAs 770s Coercing to integers 770s > str(xs) 770s List of 4 770s $ : num [1:43, 1:78] 13.3 12.72 4.15 -15.4 -9.29 ... 770s $ : int [1:46, 1:61] 2 11 -16 -5 19 5 26 -13 1 -9 ... 770s $ : num [1:42, 1:47] NA -22.3 NA NA NA ... 770s $ : int [1:42, 1:78] NA NA NA NA NA NA NA NA NA NA ... 770s > 770s > for (kk in 1:4) { 770s + cat("Random test #", kk, "\n", sep = "") 770s + x <- xs[[kk]] 770s + tx <- t(x) 770s + 770s + for (ties in c("max", "min", "average", "first", "last", "dense")) { 770s + cat(sprintf("ties.method = %s\n", ties)) 770s + # rowRanks(): 770s + y1 <- matrixStats::rowRanks(x, ties.method = ties) 770s + if (ties != "last" || getRversion() >= "3.3.0") { 770s + y2 <- rowRanks_R(x, ties.method = ties) 770s + stopifnot(identical(y1, y2)) 770s + } 770s + 770s + y3 <- matrixStats::colRanks(tx, ties.method = ties) 770s + stopifnot(identical(y1, y3)) 770s + 770s + # colRanks(): 770s + y1 <- matrixStats::colRanks(x, ties.method = ties) 770s + if (ties != "last" || getRversion() >= "3.3.0") { 770s + y2 <- colRanks_R(x, ties.method = ties) 770s + stopifnot(identical(y1, y2)) 770s + } 770s + 770s + y3 <- matrixStats::rowRanks(tx, ties.method = ties) 770s + stopifnot(identical(y1, y3)) 770s + } 770s + } # for (kk ...) 770s Random test #1 770s ties.method = max 770s ties.method = min 770s ties.method = average 770s ties.method = first 770s ties.method = last 770s ties.method = dense 770s Random test #2 770s ties.method = max 770s ties.method = min 770s ties.method = average 770s ties.method = first 770s ties.method = last 770s ties.method = dense 770s Random test #3 770s ties.method = max 770s ties.method = min 770s ties.method = average 770s ties.method = first 770s ties.method = last 770s ties.method = dense 770s Random test #4 770s ties.method = max 770s ties.method = min 770s ties.method = average 770s ties.method = first 770s ties.method = last 770s ties.method = dense 770s > 770s > # Note, below we know ties.method %in% c("min", "max", "average") is correct 770s > 770s > cat("Consistency checks for random:\n") 770s Consistency checks for random: 770s > tolerance <- 0.1 770s > nsamples <- 10000 770s > for (kk in 1:4) { 770s + cat("Random test #", kk, "\n", sep = "") 770s + x <- xs[[kk]] 770s + tx <- t(x) 770s + 770s + for (ties in c("random")) { 770s + cat(sprintf("ties.method = %s\n", ties)) 770s + 770s + ## rowRanks(): 770s + y0 <- rowRanks_R(x, ties.method = ties) 770s + y1 <- matrixStats::rowRanks(x, ties.method = ties) 770s + 770s + ## Assert symmetric rank differences 770s + d <- y1 - y0 770s + stopifnot(all(rowSums(d) == 0, na.rm = TRUE)) 770s + 770s + ## Assert within [min, max] 770s + y2min <- matrixStats::rowRanks(x, ties.method = "min") 770s + y2max <- matrixStats::rowRanks(x, ties.method = "max") 770s + stopifnot(all(y1 >= y2min, na.rm = TRUE) && all(y1 <= y2max, na.rm = TRUE)) 770s + ## Assert near average 770s + y1list <- replicate(nsamples, matrixStats::rowRanks(x, ties.method = ties), simplify = FALSE) 770s + y1mean <- Reduce(`+`, y1list) / nsamples 770s + y2avg <- matrixStats::rowRanks(x, ties.method = "average") 770s + stopifnot(all(abs(y1mean - y2avg) < tolerance, na.rm = TRUE)) 770s + 770s + ## colRanks(): 770s + y0 <- colRanks_R(x, ties.method = ties) 770s + y1 <- matrixStats::colRanks(x, ties.method = ties) 770s + 770s + ## Assert symmetric rank differences 770s + d <- y1 - y0 770s + stopifnot(all(rowSums(d) == 0, na.rm = TRUE)) 770s + 770s + ## Assert within [min, max] 770s + y2min <- matrixStats::colRanks(x, ties.method = "min") 770s + y2max <- matrixStats::colRanks(x, ties.method = "max") 770s + stopifnot(all(y1 >= y2min, na.rm = TRUE) && all(y1 <= y2max, na.rm = TRUE)) 770s + y1list <- replicate(nsamples, matrixStats::colRanks(x, ties.method = ties), simplify = FALSE) 770s + y1mean <- Reduce(`+`, y1list) / nsamples 770s + ## Assert near average 770s + y2avg <- matrixStats::colRanks(x, ties.method = "average") 770s + stopifnot(all(abs(y1mean - y2avg) < tolerance, na.rm = TRUE)) 770s + } 770s + } # for (kk ...) 771s Random test #1 771s ties.method = random 778s Random test #2 778s ties.method = random 783s Random test #3 783s ties.method = random 785s Random test #4 785s ties.method = random 787s > 787s > 787s > ## Exception handling 787s > x <- matrix(1:12, nrow = 3L, ncol = 4L) 787s > y <- try(rowRanks(x, ties.method = "unknown"), silent = TRUE) 787s > stopifnot(inherits(y, "try-error")) 787s > 787s > y <- try(colRanks(x, ties.method = "unknown"), silent = TRUE) 787s > stopifnot(inherits(y, "try-error")) 787s > 787s > dimnames <- list(letters[1:3], LETTERS[1:4]) 787s > for (mode in c("integer", "double")){ 787s + storage.mode(x) <- mode 787s + # Test with and without dimnames on x 787s + for (setDimnames in c(TRUE, FALSE)) { 787s + if (setDimnames) dimnames(x) <- dimnames 787s + else dimnames(x) <- NULL 787s + # Check names attribute 787s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 787s + for (ties in c("max", "min", "average", "first", "last", "dense", "random")) { 787s + cat(sprintf("ties.method = %s\n", ties)) 787s + # rowRanks(): 787s + y1 <- matrixStats::rowRanks(x, ties.method = ties, useNames = useNames) 787s + if (ties != "last" || getRversion() >= "3.3.0") { 787s + y2 <- rowRanks_R(x, ties.method = ties, useNames = useNames) 787s + stopifnot(identical(y1, y2)) 787s + } 787s + 787s + y3 <- matrixStats::colRanks(t(x), ties.method = ties, useNames = useNames) 787s + stopifnot(identical(y1, y3)) 787s + 787s + # colRanks(): 787s + y1 <- matrixStats::colRanks(x, ties.method = ties, useNames = useNames) 787s + if (ties != "last" || getRversion() >= "3.3.0") { 787s + y2 <- colRanks_R(x, ties.method = ties, useNames = useNames) 787s + stopifnot(identical(y1, y2)) 787s + } 787s + 787s + y3 <- matrixStats::rowRanks(t(x), ties.method = ties, useNames = useNames) 787s + stopifnot(identical(y1, y3)) 787s + 787s + # Check preserveShape 787s + y1 <- matrixStats::colRanks(x, ties.method = ties, preserveShape = TRUE, useNames = useNames) 787s + if (ties != "last" || getRversion() >= "3.3.0") { 787s + y2 <- colRanks_R(x, ties.method = ties, preserveShape = TRUE, useNames = useNames) 787s + stopifnot(identical(y1, y2)) 787s + } 787s + } 787s + } 787s + } 787s + } 787s ties.method = max 787s ties.method = min 787s ties.method = average 787s ties.method = first 787s ties.method = last 787s ties.method = dense 787s ties.method = random 787s ties.method = max 787s ties.method = min 787s ties.method = average 787s ties.method = first 787s ties.method = last 787s ties.method = dense 787s ties.method = random 787s ties.method = max 787s ties.method = min 787s ties.method = average 787s ties.method = first 788s ties.method = last 788s ties.method = dense 788s ties.method = random 788s ties.method = max 788s ties.method = min 788s ties.method = average 788s ties.method = first 788s ties.method = last 788s ties.method = dense 788s ties.method = random 788s ties.method = max 788s ties.method = min 788s ties.method = average 788s ties.method = first 788s ties.method = last 788s ties.method = dense 788s ties.method = random 788s ties.method = max 788s ties.method = min 788s ties.method = average 788s ties.method = first 788s ties.method = last 788s ties.method = dense 788s ties.method = random 788s ties.method = max 788s ties.method = min 788s ties.method = average 788s ties.method = first 788s ties.method = last 788s ties.method = dense 788s ties.method = random 788s ties.method = max 788s ties.method = min 788s ties.method = average 788s ties.method = first 788s ties.method = last 788s ties.method = dense 788s ties.method = random 788s > 788s 788s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 788s Copyright (C) 2024 The R Foundation for Statistical Computing 788s Platform: arm-unknown-linux-gnueabihf (32-bit) 788s 788s R is free software and comes with ABSOLUTELY NO WARRANTY. 788s You are welcome to redistribute it under certain conditions. 788s Type 'license()' or 'licence()' for distribution details. 788s 788s R is a collaborative project with many contributors. 788s Type 'contributors()' for more information and 788s 'citation()' on how to cite R or R packages in publications. 788s 788s Type 'demo()' for some demos, 'help()' for on-line help, or 788s 'help.start()' for an HTML browser interface to help. 788s Type 'q()' to quit R. 788s 788s > library("matrixStats") 788s > 788s > rowRanks_R <- function(x, ties.method = "average", ..., useNames = NA) { 788s + ans <- t(apply(x, MARGIN = 1L, FUN = rank, na.last = "keep", 788s + ties.method = ties.method)) 788s + 788s + # Preserve dimnames attribute? 788s + dim(ans) <- dim(x) 788s + dimnames(ans) <- if (isTRUE(useNames)) dimnames(x) else NULL 788s + 788s + ans 788s + } 788s > 788s > colRanks_R <- function(x, ties.method, preserveShape = FALSE, ..., useNames = NA) { 788s + ans <- t(apply(x, MARGIN = 2L, FUN = rank, na.last = "keep", ties.method = ties.method)) 788s + 788s + # Preserve dimnames attribute? 788s + tx <- t(x) 788s + dim(ans) <- dim(tx) 788s + dimnames(ans) <- if (isTRUE(useNames)) dimnames(tx) else NULL 788s + 788s + if (preserveShape) ans <- t(ans) 788s + ans 788s + } 788s > 788s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 788s > # Subsetted tests 788s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 788s > source("utils/validateIndicesFramework.R") 788s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 788s > storage.mode(x) <- "integer" 788s > 788s > # To check dimnames attribute 788s > dimnames <- list(letters[1:6], LETTERS[1:6]) 788s > 788s > colRanks_R_t <- function(x, rows, cols, ..., useNames = NA) { 788s + t(colRanks(t(x), rows = cols, cols = rows, preserveShape = TRUE, ..., useNames = useNames)) 788s + } 788s > 788s > # Test with and without dimnames on x 788s > for (setDimnames in c(TRUE, FALSE)) { 788s + if (setDimnames) dimnames(x) <- dimnames 788s + else dimnames(x) <- NULL 788s + 788s + count <- 0L 788s + for (rows in index_cases) { 788s + for (cols in index_cases) { 788s + count <- count + 1L 788s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 788s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 788s + useNames <- useNames[count %% length(useNames) + 1] 788s + 788s + validateIndicesTestMatrix(x, rows, cols, 788s + ftest = rowRanks, fsure = rowRanks_R, 788s + ties.method = "average", useNames = useNames) 788s + 788s + validateIndicesTestMatrix(x, rows, cols, 788s + ftest = colRanks_R_t, fsure = rowRanks_R, 788s + ties.method = "average", useNames = useNames) 788s + 788s + for (perserveShape in c(TRUE, FALSE)) { 788s + validateIndicesTestMatrix(x, rows, cols, 788s + ftest = colRanks, fsure = colRanks_R, 788s + ties.method = "average", perserveShape = perserveShape, 788s + useNames = useNames) 788s + } 788s + } 788s + } 788s + } 791s > 792s 792s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 792s Copyright (C) 2024 The R Foundation for Statistical Computing 792s Platform: arm-unknown-linux-gnueabihf (32-bit) 792s 792s R is free software and comes with ABSOLUTELY NO WARRANTY. 792s You are welcome to redistribute it under certain conditions. 792s Type 'license()' or 'licence()' for distribution details. 792s 792s R is a collaborative project with many contributors. 792s Type 'contributors()' for more information and 792s 'citation()' on how to cite R or R packages in publications. 792s 792s Type 'demo()' for some demos, 'help()' for on-line help, or 792s 'help.start()' for an HTML browser interface to help. 792s Type 'q()' to quit R. 792s 792s > library("matrixStats") 792s > 792s > ## Always allow testing of the 'center' argument (as long as it's not defunct) 792s > options(matrixStats.center.onUse = "ignore") 792s > 792s > ## Create isFALSE() if running on an old version of R 792s > if (!exists("isFALSE", mode="function")) { 792s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 792s + } 792s > 792s > rowSds_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 792s + suppressWarnings({ 792s + sigma <- apply(x, MARGIN = 1L, FUN = sd, na.rm = na.rm) 792s + }) 792s + stopifnot(!any(is.infinite(sigma))) 792s + 792s + # Keep naming support consistency same as rowSds() 792s + if (is.null(center) || ncol(x) <= 1L) { 792s + if (is.na(useNames) || isFALSE(useNames)) names(sigma) <- NULL 792s + } 792s + else if (isFALSE(useNames)) names(sigma) <- NULL 792s + sigma 792s + } 792s > 792s > colSds_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 792s + suppressWarnings({ 792s + sigma <- apply(x, MARGIN = 2L, FUN = sd, na.rm = na.rm) 792s + }) 792s + stopifnot(!any(is.infinite(sigma))) 792s + 792s + # Keep naming support consistency same as colSds() 792s + if (is.null(center) || nrow(x) <= 1L) { 792s + if (is.na(useNames) || isFALSE(useNames)) names(sigma) <- NULL 792s + } 792s + if (isFALSE(useNames)) names(sigma) <- NULL 792s + sigma 792s + } 792s > 792s > 792s > rowSds_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 792s + center <- rowWeightedMeans(x, cols = cols, na.rm = na.rm, useNames = FALSE) 792s + sigma <- rowSds(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 792s + stopifnot(!any(is.infinite(sigma))) 792s + sigma 792s + } 792s > 792s > colSds_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 792s + center <- colWeightedMeans(x, rows = rows, na.rm = na.rm, useNames = FALSE) 792s + sigma <- colSds(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 792s + stopifnot(!any(is.infinite(sigma))) 792s + sigma 792s + } 792s > 792s > 792s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 792s > # With and without some NAs 792s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 792s > for (mode in c("integer", "double")) { 792s + for (add_na in c(FALSE, TRUE)) { 792s + cat("add_na = ", add_na, "\n", sep = "") 792s + 792s + x <- matrix(1:50 + 0.1, nrow = 10L, ncol = 5L) 792s + if (add_na) { 792s + x[3:7, c(2, 4)] <- NA_real_ 792s + } 792s + cat("mode: ", mode, "\n", sep = "") 792s + storage.mode(x) <- mode 792s + str(x) 792s + 792s + # To check names attribute 792s + dimnames <- list(letters[1:10], LETTERS[1:5]) 792s + 792s + # Test with and without dimnames on x 792s + for (setDimnames in c(TRUE, FALSE)) { 792s + if (setDimnames) dimnames(x) <- dimnames 792s + else dimnames(x) <- NULL 792s + # Row/column ranges 792s + for (na.rm in c(FALSE, TRUE)) { 792s + # Check names attribute 792s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 792s + r0 <- rowSds_R(x, na.rm = na.rm, useNames = useNames) 792s + r1 <- rowSds(x, na.rm = na.rm, useNames = useNames) 792s + r1b <- rowSds_center(x, na.rm = na.rm, useNames = useNames) 792s + r2 <- colSds(t(x), na.rm = na.rm, useNames = useNames) 792s + r2b <- colSds_center(t(x), na.rm = na.rm, useNames = useNames) 792s + stopifnot(all.equal(r1, r2)) 792s + stopifnot(all.equal(r1, r0)) 792s + stopifnot(all.equal(r2, r0)) 792s + stopifnot(all.equal(r1b, r2b)) 792s + stopifnot( 792s + !any(is.infinite(r1)), 792s + !any(is.infinite(r2)), 792s + !any(is.infinite(r1b)), 792s + !any(is.infinite(r2b)) 792s + ) 792s + } 792s + } 792s + } 792s + } # for (add_na ...) 792s + } 792s add_na = FALSE 792s mode: integer 792s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 792s add_na = TRUE 792s mode: integer 792s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 792s add_na = FALSE 792s mode: double 792s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 792s add_na = TRUE 792s mode: double 792s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 792s > 792s > 792s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 792s > # All NAs 792s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 792s > for (mode in c("integer", "double")) { 792s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 792s + cat("mode: ", mode, "\n", sep = "") 792s + storage.mode(x) <- mode 792s + str(x) 792s + 792s + # Test with and without dimnames on x 792s + for (setDimnames in c(TRUE, FALSE)) { 792s + if (setDimnames) dimnames(x) <- dimnames 792s + else dimnames(x) <- NULL 792s + # Row/column ranges 792s + for (na.rm in c(FALSE, TRUE)) { 792s + # Check names attribute 792s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 792s + r0 <- rowSds_R(x, na.rm = na.rm, useNames = useNames) 792s + r1 <- rowSds(x, na.rm = na.rm, useNames = useNames) 792s + r1b <- rowSds_center(x, na.rm = na.rm, useNames = useNames) 792s + r2 <- colSds(t(x), na.rm = na.rm, useNames = useNames) 792s + r2b <- colSds_center(t(x), na.rm = na.rm, useNames = useNames) 792s + stopifnot(all.equal(r1, r2)) 792s + stopifnot(all.equal(r1, r0)) 792s + stopifnot(all.equal(r2, r0)) 792s + stopifnot(all.equal(r1b, r2b)) 792s + stopifnot( 792s + !any(is.infinite(r1)), 792s + !any(is.infinite(r2)), 792s + !any(is.infinite(r1b)), 792s + !any(is.infinite(r2b)) 792s + ) 792s + } 792s + } 792s + } 792s + } 792s mode: integer 792s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 792s mode: double 792s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 792s > 792s > 792s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 792s > # A 1x1 matrix 792s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 792s > x <- matrix(0, nrow = 1L, ncol = 1L) 792s > dimnames <- list("a", "A") 792s > for (na.rm in c(FALSE, TRUE)) { 792s + cat("na.rm = ", na.rm, "\n", sep = "") 792s + 792s + # Test with and without dimnames on x 792s + for (setDimnames in c(TRUE, FALSE)) { 792s + if (setDimnames) dimnames(x) <- dimnames 792s + else dimnames(x) <- NULL 792s + # Row/column ranges 792s + for (na.rm in c(FALSE, TRUE)) { 792s + # Check names attribute 792s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 792s + r0 <- rowSds_R(x, na.rm = na.rm, useNames = useNames) 792s + r1 <- rowSds(x, na.rm = na.rm, useNames = useNames) 792s + r1b <- rowSds_center(x, na.rm = na.rm, useNames = useNames) 792s + r2 <- colSds(t(x), na.rm = na.rm, useNames = useNames) 792s + r2b <- colSds_center(t(x), na.rm = na.rm, useNames = useNames) 792s + stopifnot(all.equal(r1, r2)) 792s + stopifnot(all.equal(r1, r0)) 792s + stopifnot(all.equal(r2, r0)) 792s + stopifnot(all.equal(r1b, r2b)) 792s + stopifnot( 792s + !any(is.infinite(r1)), 792s + !any(is.infinite(r2)), 792s + !any(is.infinite(r1b)), 792s + !any(is.infinite(r2b)) 792s + ) 792s + } 792s + } 792s + } 792s + } 792s na.rm = FALSE 792s na.rm = TRUE 792s > 792s 792s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 792s Copyright (C) 2024 The R Foundation for Statistical Computing 792s Platform: arm-unknown-linux-gnueabihf (32-bit) 792s 792s R is free software and comes with ABSOLUTELY NO WARRANTY. 792s You are welcome to redistribute it under certain conditions. 792s Type 'license()' or 'licence()' for distribution details. 792s 792s R is a collaborative project with many contributors. 792s Type 'contributors()' for more information and 792s 'citation()' on how to cite R or R packages in publications. 792s 792s Type 'demo()' for some demos, 'help()' for on-line help, or 792s 'help.start()' for an HTML browser interface to help. 792s Type 'q()' to quit R. 792s 796s > library("matrixStats") 796s > 796s > ## Always allow testing of the 'center' argument (as long as it's not defunct) 796s > options(matrixStats.center.onUse = "ignore") 796s > 796s > ## Create isFALSE() if running on an old version of R 796s > if (!exists("isFALSE", mode="function")) { 796s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 796s + } 796s > 796s > rowSds_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 796s + suppressWarnings({ 796s + sigma <- apply(x, MARGIN = 1L, FUN = sd, na.rm = na.rm) 796s + }) 796s + stopifnot(!any(is.infinite(sigma))) 796s + 796s + # Keep naming support consistency same as rowSds() 796s + if (is.null(center) || ncol(x) <= 1L) { 796s + if (is.na(useNames) || isFALSE(useNames)) names(sigma) <- NULL 796s + } 796s + else if (isFALSE(useNames)) names(sigma) <- NULL 796s + sigma 796s + } 796s > 796s > colSds_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 796s + suppressWarnings({ 796s + sigma <- apply(x, MARGIN = 2L, FUN = sd, na.rm = na.rm) 796s + }) 796s + stopifnot(!any(is.infinite(sigma))) 796s + 796s + # Keep naming support consistency same as colSds() 796s + if (is.null(center) || nrow(x) <= 1L) { 796s + if (is.na(useNames) || isFALSE(useNames)) names(sigma) <- NULL 796s + } 796s + else if (isFALSE(useNames)) names(sigma) <- NULL 796s + sigma 796s + } 796s > 796s > 796s > rowSds_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 796s + center <- rowWeightedMeans(x, cols = cols, na.rm = na.rm, useNames = FALSE) 796s + sigma <- rowSds(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 796s + stopifnot(!any(is.infinite(sigma))) 796s + sigma 796s + } 796s > 796s > colSds_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 796s + center <- colWeightedMeans(x, rows = rows, na.rm = na.rm, useNames = FALSE) 796s + sigma <- colSds(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 796s + stopifnot(!any(is.infinite(sigma))) 796s + sigma 796s + } 796s > 796s > 796s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 796s > # Subsetted tests 796s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 796s > source("utils/validateIndicesFramework.R") 796s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 796s > storage.mode(x) <- "integer" 796s > 796s > # To check names attribute 796s > dimnames <- list(letters[1:6], LETTERS[1:6]) 796s > 796s > # Test with and without dimnames on x 796s > for (setDimnames in c(TRUE, FALSE)) { 796s + if (setDimnames) dimnames(x) <- dimnames 796s + else dimnames(x) <- NULL 796s + 796s + count <- 0L 796s + for (rows in index_cases) { 796s + for (cols in index_cases) { 796s + count <- count + 1L 796s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 796s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 796s + useNames <- useNames[count %% length(useNames) + 1] 796s + 796s + validateIndicesTestMatrix(x, rows, cols, 796s + ftest = rowSds, fsure = rowSds_R, 796s + na.rm = na.rm, useNames = useNames) 796s + validateIndicesTestMatrix(x, rows, cols, 796s + ftest = rowSds_center, fsure = rowSds_R, 796s + na.rm = na.rm, center = TRUE, useNames = useNames) 796s + 796s + validateIndicesTestMatrix(x, rows, cols, 796s + fcoltest = colSds, fsure = rowSds_R, 796s + na.rm = na.rm, useNames = useNames) 796s + validateIndicesTestMatrix(x, rows, cols, 796s + fcoltest = colSds_center, fsure = rowSds_R, 796s + na.rm = na.rm, center = TRUE, useNames = useNames) 796s + } 796s + } 796s + } 799s > 799s 799s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 799s Copyright (C) 2024 The R Foundation for Statistical Computing 799s Platform: arm-unknown-linux-gnueabihf (32-bit) 799s 799s R is free software and comes with ABSOLUTELY NO WARRANTY. 799s You are welcome to redistribute it under certain conditions. 799s Type 'license()' or 'licence()' for distribution details. 799s 799s R is a collaborative project with many contributors. 799s Type 'contributors()' for more information and 799s 'citation()' on how to cite R or R packages in publications. 799s 799s Type 'demo()' for some demos, 'help()' for on-line help, or 799s 'help.start()' for an HTML browser interface to help. 799s Type 'q()' to quit R. 799s 799s > library("matrixStats") 799s > 799s > rowSums2_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 799s + ## FIXME: sum() may overflow for integers, whereas 799s + ## base::rowSums() doesn't. What should rowSums2() do? 799s + ## apply(x, MARGIN = 1L, FUN = sum, na.rm = na.rm) 799s + res <- rowSums(x, na.rm = na.rm) 799s + if (is.na(useNames) || !useNames) names(res) <- NULL 799s + res 799s + } 799s > 799s > colSums2_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 799s + ## FIXME: sum() may overflow for integers, whereas 799s + ## base::colSums() doesn't. What should colSums2() do? 799s + ## apply(x, MARGIN = 2L, FUN = sum, na.rm = na.rm) 799s + res <- colSums(x, na.rm = na.rm) 799s + if (is.na(useNames) || !useNames) names(res) <- NULL 799s + res 799s + } 799s > 799s > for (mode in c("integer", "logical", "double")) { 799s + x <- matrix(-4:4, nrow = 3, ncol = 3) 799s + storage.mode(x) <- mode 799s + if (mode == "double") x <- x + 0.1 799s + 799s + # To check names attribute 799s + dimnames <- list(letters[1:3], LETTERS[1:3]) 799s + 799s + # Test with and without dimnames on x 799s + for (setDimnames in c(TRUE, FALSE)) { 799s + if (setDimnames) dimnames(x) <- dimnames 799s + else dimnames(x) <- NULL 799s + # Check names attribute 799s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 799s + y0 <- rowSums2_R(x, na.rm = FALSE, useNames = useNames) 799s + y1 <- rowSums2(x, na.rm = FALSE, useNames = useNames) 799s + stopifnot(all.equal(y1, y0)) 799s + 799s + y0 <- colSums2_R(x, na.rm = FALSE, useNames = useNames) 799s + y1 <- colSums2(x, na.rm = FALSE, useNames = useNames) 799s + stopifnot(all.equal(y1, y0)) 799s + } 799s + } 799s + } 799s > 799s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 799s > # Special case: Single-element matrix 799s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 799s > cat("Special case: Single-element matrix:\n") 799s Special case: Single-element matrix: 799s > for (mode in c("integer", "logical", "double")) { 799s + x <- matrix(1, nrow = 1, ncol = 1) 799s + storage.mode(x) <- mode 799s + 799s + # To check names attribute 799s + dimnames <- list("a", "A") 799s + 799s + # Test with and without dimnames on x 799s + for (setDimnames in c(TRUE, FALSE)) { 799s + if (setDimnames) dimnames(x) <- dimnames 799s + else dimnames(x) <- NULL 799s + # Check names attribute 799s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 799s + y0 <- rowSums2_R(x, na.rm = FALSE, useNames = useNames) 799s + y1 <- rowSums2(x, na.rm = FALSE, useNames = useNames) 799s + stopifnot(all.equal(y1, y0)) 799s + 799s + y0 <- colSums2_R(x, na.rm = FALSE, useNames = useNames) 799s + y1 <- colSums2(x, na.rm = FALSE, useNames = useNames) 799s + stopifnot(all.equal(y1, y0)) 799s + } 799s + } 799s + } 799s > 799s > 799s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 799s > # Special case: Empty matrix 799s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 799s > cat("Special case: Empty matrix:\n") 799s Special case: Empty matrix: 799s > for (mode in c("integer", "logical", "double")) { 799s + x <- matrix(integer(0), nrow = 0, ncol = 0) 799s + storage.mode(x) <- mode 799s + 799s + y0 <- rowSums2_R(x, na.rm = FALSE) 799s + y1 <- rowSums2(x, na.rm = FALSE) 799s + stopifnot(all.equal(y1, y0)) 799s + 799s + y0 <- colSums2_R(x, na.rm = FALSE) 799s + y1 <- colSums2(x, na.rm = FALSE) 799s + stopifnot(all.equal(y1, y0)) 799s + } 799s > 799s > 799s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 799s > # Special case: All NAs 799s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 799s > cat("Special case: All NAs:\n") 799s Special case: All NAs: 799s > for (mode in c("integer", "logical", "double")) { 799s + x <- matrix(NA_integer_, nrow = 3, ncol = 3) 799s + storage.mode(x) <- mode 799s + 799s + # To check names attribute 799s + dimnames <- list(letters[1:3], LETTERS[1:3]) 799s + 799s + # Test with and without dimnames on x 799s + for (setDimnames in c(TRUE, FALSE)) { 799s + if (setDimnames) dimnames(x) <- dimnames 799s + else dimnames(x) <- NULL 799s + # Check names attribute 799s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 799s + y0 <- rowSums2_R(x, na.rm = TRUE, useNames = useNames) 799s + y1 <- rowSums2(x, na.rm = TRUE, useNames = useNames) 799s + stopifnot(all.equal(y1, y0)) 799s + 799s + y0 <- colSums2_R(x, na.rm = TRUE, useNames = useNames) 799s + y1 <- colSums2(x, na.rm = TRUE, useNames = useNames) 799s + stopifnot(all.equal(y1, y0)) 799s + } 799s + } 799s + } 799s > 799s > 799s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 799s > # Special case: All NaNs 799s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 799s > cat("Special case: All NaNs:\n") 799s Special case: All NaNs: 799s > x <- matrix(NA_real_, nrow = 3, ncol = 3) 799s > 799s > # Test with and without dimnames on x 799s > for (setDimnames in c(TRUE, FALSE)) { 799s + if (setDimnames) dimnames(x) <- dimnames 799s + else dimnames(x) <- NULL 799s + # Check names attribute 799s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 799s + y0 <- rowSums2_R(x, na.rm = TRUE, useNames = useNames) 799s + y1 <- rowSums2(x, na.rm = TRUE, useNames = useNames) 799s + stopifnot(all.equal(y1, y0)) 799s + 799s + y0 <- colSums2_R(x, na.rm = TRUE, useNames = useNames) 799s + y1 <- colSums2(x, na.rm = TRUE, useNames = useNames) 799s + stopifnot(all.equal(y1, y0)) 799s + } 799s + } 799s > 799s > 799s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 799s > # Special case: All Infs 799s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 799s > cat("Special case: All Infs:\n") 799s Special case: All Infs: 799s > x <- matrix(Inf, nrow = 3, ncol = 3) 799s > 799s > # Test with and without dimnames on x 799s > for (setDimnames in c(TRUE, FALSE)) { 799s + if (setDimnames) dimnames(x) <- dimnames 799s + else dimnames(x) <- NULL 799s + # Check names attribute 799s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 799s + y0 <- rowSums2_R(x, na.rm = FALSE, useNames = useNames) 799s + y1 <- rowSums2(x, na.rm = FALSE, useNames = useNames) 799s + stopifnot(all.equal(y1, y0)) 799s + 799s + y0 <- colSums2_R(x, na.rm = FALSE, useNames = useNames) 799s + y1 <- colSums2(x, na.rm = FALSE, useNames = useNames) 799s + stopifnot(all.equal(y1, y0)) 799s + } 799s + } 799s > 799s > 799s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 799s > # Special case: All -Infs 799s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 799s > cat("Special case: All -Infs:\n") 799s Special case: All -Infs: 799s > x <- matrix(-Inf, nrow = 3, ncol = 3) 799s > 799s > # Test with and without dimnames on x 799s > for (setDimnames in c(TRUE, FALSE)) { 799s + if (setDimnames) dimnames(x) <- dimnames 799s + else dimnames(x) <- NULL 799s + # Check names attribute 799s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 799s + y0 <- rowSums2_R(x, na.rm = FALSE, useNames = useNames) 799s + y1 <- rowSums2(x, na.rm = FALSE, useNames = useNames) 799s + stopifnot(all.equal(y1, y0)) 799s + 799s + y0 <- colSums2_R(x, na.rm = FALSE, useNames = useNames) 799s + y1 <- colSums2(x, na.rm = FALSE, useNames = useNames) 799s + stopifnot(all.equal(y1, y0)) 799s + } 799s + } 800s > 800s > 800s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 800s > # Special case: Infs and -Infs 800s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 800s > cat("Special case: Infs and -Infs:\n") 800s Special case: Infs and -Infs: 800s > x <- matrix(c(-Inf, +Inf), nrow = 4, ncol = 4) 800s > 800s > # To check names attribute 800s > dimnames <- list(letters[1:4], LETTERS[1:4]) 800s > 800s > # Test with and without dimnames on x 800s > for (setDimnames in c(TRUE, FALSE)) { 800s + if (setDimnames) dimnames(x) <- dimnames 800s + else dimnames(x) <- NULL 800s + # Check names attribute 800s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 800s + y0 <- rowSums2_R(x, na.rm = FALSE, useNames = useNames) 800s + y1 <- rowSums2(x, na.rm = FALSE, useNames = useNames) 800s + stopifnot(all.equal(y1, y0)) 800s + 800s + y0 <- colSums2_R(x, na.rm = FALSE, useNames = useNames) 800s + y1 <- colSums2(x, na.rm = FALSE, useNames = useNames) 800s + stopifnot(all.equal(y1, y0)) 800s + } 800s + } 800s > 800s > 800s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 800s > # Special case: NaNs and NAs 800s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 800s > cat("Special case: Infs and -Infs:\n") 800s Special case: Infs and -Infs: 800s > x <- matrix(c(NaN, NA_real_), nrow = 4, ncol = 4) 800s > 800s > y0 <- rowSums(x, na.rm = FALSE) 800s > str(y0) 800s num [1:4] NaN NA NaN NA 800s > stopifnot(all(is.na(y0)), length(unique(y0)) >= 1L) 800s > y1 <- rowSums2(x, na.rm = FALSE) 800s > str(y0) 800s num [1:4] NaN NA NaN NA 800s > stopifnot(all(is.na(y1)), length(unique(y1)) >= 1L) 800s > stopifnot(all.equal(y1, y0)) 800s > 800s > y0 <- colSums(x, na.rm = FALSE) 800s > stopifnot(all(is.na(y0)), length(unique(y0)) == 1L) 800s > y1 <- colSums2(x, na.rm = FALSE) 800s > stopifnot(all(is.na(y1)), length(unique(y1)) == 1L) 800s > ## NOTE, due to compiler optimization, it is not guaranteed that NA is 800s > ## returned here (as one would expect). NaN might very well be returned, 800s > ## when both NA and NaN are involved. This is an accepted feature in R, 800s > ## which is documented in help("is.nan"). See also 800s > ## https://stat.ethz.ch/pipermail/r-devel/2017-April/074009.html. 800s > ## Thus, we cannot guarantee that y1 is identical to y0. 800s > 800s > 800s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 800s > # Special case: Integer overflow with ties 800s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 800s > cat("Special case: Integer overflow with ties:\n") 800s Special case: Integer overflow with ties: 800s > x <- matrix(.Machine$integer.max, nrow = 4, ncol = 4) 800s > 800s > # Test with and without dimnames on x 800s > for (setDimnames in c(TRUE, FALSE)) { 800s + if (setDimnames) dimnames(x) <- dimnames 800s + else dimnames(x) <- NULL 800s + # Check names attribute 800s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 800s + y0 <- rowSums2_R(x, na.rm = FALSE, useNames = useNames) 800s + y1 <- rowSums2(x, na.rm = FALSE, useNames = useNames) 800s + stopifnot(all.equal(y1, y0)) 800s + 800s + y0 <- colSums2_R(x, na.rm = FALSE, useNames = useNames) 800s + y1 <- colSums2(x, na.rm = FALSE, useNames = useNames) 800s + stopifnot(all.equal(y1, y0)) 800s + } 800s + } 800s > 800s > 800s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 800s > # Consistency checks 800s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 800s > set.seed(1) 800s > 800s > cat("Consistency checks:\n") 800s Consistency checks: 800s > n_sims <- if (Sys.getenv("_R_CHECK_USE_VALGRIND_") != "") 4L else 20L 800s > for (kk in seq_len(n_sims)) { 800s + cat("Random test #", kk, "\n", sep = "") 800s + 800s + # Simulate data in a matrix of any shape 800s + dim <- sample(50:200, size = 2) 800s + n <- prod(dim) 800s + x <- rnorm(n, sd = 100) 800s + dim(x) <- dim 800s + 800s + # Add NAs? 800s + if ((kk %% 4) %in% c(3, 0)) { 800s + cat("Adding NAs\n") 800s + nna <- sample(n, size = 1) 800s + na_values <- c(NA_real_, NaN) 800s + t <- sample(na_values, size = nna, replace = TRUE) 800s + x[sample(length(x), size = nna)] <- t 800s + } 800s + 800s + # Mode? 800s + modes <- "double" 800s + if ((kk %% 4) %in% c(2, 0)) { 800s + modes <- c("integer", "logical") 800s + } 800s + 800s + for (mode in modes) { 800s + if (mode != "double") { 800s + cat(sprintf("Coercing from %s to %s\n", storage.mode(x), mode)) 800s + storage.mode(x) <- mode 800s + } 800s + 800s + na.rm <- sample(c(TRUE, FALSE), size = 1) 800s + 800s + # rowSums2(): 800s + y0 <- rowSums2_R(x, na.rm = na.rm) 800s + y1 <- rowSums2(x, na.rm = na.rm) 800s + stopifnot(all.equal(y1, y0)) 800s + y2 <- colSums2(t(x), na.rm = na.rm) 800s + stopifnot(all.equal(y2, y0)) 800s + 800s + # colSums2(): 800s + y0 <- colSums2_R(x, na.rm = na.rm) 800s + y1 <- colSums2(x, na.rm = na.rm) 800s + stopifnot(all.equal(y1, y0)) 800s + y2 <- rowSums2(t(x), na.rm = na.rm) 800s + stopifnot(all.equal(y2, y0)) 800s + } 800s + } # for (kk ...) 800s Random test #1 800s Random test #2 800s Coercing from double to integer 800s Coercing from integer to logical 800s Random test #3 800s Adding NAs 800s Random test #4 800s Adding NAs 800s Coercing from double to integer 800s Coercing from integer to logical 800s Random test #5 800s Random test #6 800s Coercing from double to integer 800s Coercing from integer to logical 800s Random test #7 800s Adding NAs 800s Random test #8 800s Adding NAs 800s Coercing from double to integer 800s Coercing from integer to logical 800s Random test #9 800s Random test #10 800s Coercing from double to integer 800s Coercing from integer to logical 800s Random test #11 800s Adding NAs 800s Random test #12 800s Adding NAs 800s Coercing from double to integer 800s Coercing from integer to logical 800s Random test #13 800s Random test #14 800s Coercing from double to integer 800s Coercing from integer to logical 800s Random test #15 800s Adding NAs 800s Random test #16 800s Adding NAs 800s Coercing from double to integer 800s Coercing from integer to logical 800s Random test #17 800s Random test #18 800s Coercing from double to integer 800s Coercing from integer to logical 800s Random test #19 800s Adding NAs 800s Random test #20 800s Adding NAs 800s Coercing from double to integer 800s Coercing from integer to logical 800s > 800s 800s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 800s Copyright (C) 2024 The R Foundation for Statistical Computing 800s Platform: arm-unknown-linux-gnueabihf (32-bit) 800s 800s R is free software and comes with ABSOLUTELY NO WARRANTY. 800s You are welcome to redistribute it under certain conditions. 800s Type 'license()' or 'licence()' for distribution details. 800s 800s R is a collaborative project with many contributors. 800s Type 'contributors()' for more information and 800s 'citation()' on how to cite R or R packages in publications. 800s 800s Type 'demo()' for some demos, 'help()' for on-line help, or 800s 'help.start()' for an HTML browser interface to help. 800s Type 'q()' to quit R. 800s 800s > library("matrixStats") 800s > 800s > rowSums2_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 800s + ## FIXME: sum() may overflow for integers, whereas 800s + ## base::rowSums() doesn't. What should rowSums2() do? 800s + ## apply(x, MARGIN = 1L, FUN = sum, na.rm = na.rm) 800s + res <- rowSums(x, na.rm = na.rm) 800s + if (is.na(useNames) || !useNames) names(res) <- NULL 800s + res 800s + } 800s > 800s > colSums2_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 800s + ## FIXME: sum() may overflow for integers, whereas 800s + ## base::colSums() doesn't. What should colSums2() do? 800s + ## apply(x, MARGIN = 2L, FUN = sum, na.rm = na.rm) 800s + res <- colSums(x, na.rm = na.rm) 800s + if (is.na(useNames) || !useNames) names(res) <- NULL 800s + res 800s + } 800s > 800s > 800s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 800s > # Subsetted tests 800s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 800s > source("utils/validateIndicesFramework.R") 800s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 800s > storage.mode(x) <- "integer" 800s > 800s > # To check names attribute 800s > dimnames <- list(letters[1:6], LETTERS[1:6]) 800s > 800s > # Test with and without dimnames on x 800s > for (setDimnames in c(TRUE, FALSE)) { 800s + if (setDimnames) dimnames(x) <- dimnames 800s + else dimnames(x) <- NULL 800s + for (rows in index_cases) { 800s + for (cols in index_cases) { 800s + for (na.rm in c(TRUE, FALSE)) { 800s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 800s + validateIndicesTestMatrix(x, rows, cols, 800s + ftest = rowSums2, fsure = rowSums2_R, 800s + na.rm = na.rm, useNames = useNames) 800s + validateIndicesTestMatrix(x, rows, cols, 800s + fcoltest = colSums2, fsure = rowSums2_R, 800s + na.rm = na.rm, useNames = useNames) 800s + } 800s + } 800s + } 800s + } 800s + } 803s > 803s 803s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 803s Copyright (C) 2024 The R Foundation for Statistical Computing 803s Platform: arm-unknown-linux-gnueabihf (32-bit) 803s 803s R is free software and comes with ABSOLUTELY NO WARRANTY. 803s You are welcome to redistribute it under certain conditions. 803s Type 'license()' or 'licence()' for distribution details. 803s 803s R is a collaborative project with many contributors. 803s Type 'contributors()' for more information and 803s 'citation()' on how to cite R or R packages in publications. 803s 803s Type 'demo()' for some demos, 'help()' for on-line help, or 803s 'help.start()' for an HTML browser interface to help. 803s Type 'q()' to quit R. 803s 803s > library("matrixStats") 803s > 803s > nrow <- 6L 803s > ncol <- 5L 803s > data <- matrix(0:4, nrow = nrow, ncol = ncol) 803s > 803s > # To check names attribute 803s > dimnames <- list(letters[1:6], LETTERS[1:5]) 803s > 803s > modes <- c("integer", "logical", "raw") 803s > for (mode in modes) { 803s + cat(sprintf("Mode: %s...\n", mode)) 803s + 803s + x <- data 803s + if (mode == "logical") x <- x - 2L 803s + if (mode != "raw") x[c(2,5,7)] <- NA_integer_ 803s + storage.mode(x) <- mode 803s + print(x) 803s + 803s + unique_values <- unique(as.vector(x)) 803s + nbr_of_unique_values <- length(unique_values) 803s + 803s + y <- rowTabulates(x) 803s + print(y) 803s + stopifnot( 803s + identical(dim(y), c(nrow, nbr_of_unique_values)), 803s + all(y >= 0) 803s + ) 803s + if (mode != "raw") { 803s + y0 <- t(table(x, row(x), useNA = "always")[, seq_len(nrow(x))]) 803s + stopifnot(all(y == y0)) 803s + } 803s + # Check names attribute 803s + dimnames(x) <- dimnames 803s + y1 <- rowTabulates(x, useNames = FALSE) 803s + stopifnot(all.equal(y1, y)) 803s + if (!matrixStats:::isUseNamesNADefunct()) { 803s + y2 <- rowTabulates(x, useNames = NA) 803s + stopifnot(all.equal(y2, y)) 803s + } 803s + y <- rowTabulates(x, useNames = TRUE) 803s + stopifnot(identical(rownames(y), rownames(x))) 803s + dimnames(x) <- NULL 803s + 803s + y <- colTabulates(x) 803s + print(y) 803s + stopifnot( 803s + identical(dim(y), c(ncol, nbr_of_unique_values)), 803s + all(y >= 0) 803s + ) 803s + if (mode != "raw") { 803s + y0 <- t(table(x, col(x), useNA = "always")[, seq_len(ncol(x))]) 803s + stopifnot(all(y == y0)) 803s + } 803s + # Check names attribute 803s + dimnames(x) <- dimnames 803s + y1 <- colTabulates(x, useNames = FALSE) 803s + stopifnot(all.equal(y1, y)) 803s + if (!matrixStats:::isUseNamesNADefunct()) { 803s + y2 <- colTabulates(x, useNames = NA) 803s + stopifnot(all.equal(y2, y)) 803s + } 803s + y <- colTabulates(x, useNames = TRUE) 803s + stopifnot(identical(rownames(y), colnames(x))) 803s + dimnames(x) <- NULL 803s + 803s + # Count only certain values 803s + if (mode == "integer") { 803s + subset <- c(0:2, NA_integer_) 803s + } else if (mode == "logical") { 803s + subset <- c(TRUE, FALSE, NA) 803s + } else { 803s + subset <- c(0:2) 803s + } 803s + y <- rowTabulates(x, values = subset) 803s + print(y) 803s + stopifnot(identical(dim(y), c(nrow, length(subset)))) 803s + # Check names attribute 803s + dimnames(x) <- dimnames 803s + y1 <- rowTabulates(x, values = subset, useNames = FALSE) 803s + stopifnot(all.equal(y1, y)) 803s + if (!matrixStats:::isUseNamesNADefunct()) { 803s + y2 <- rowTabulates(x, values = subset, useNames = NA) 803s + stopifnot(all.equal(y2, y)) 803s + } 803s + y <- rowTabulates(x, values = subset, useNames = TRUE) 803s + stopifnot(identical(rownames(y), rownames(x))) 803s + dimnames(x) <- NULL 803s + 803s + y <- colTabulates(x, values = subset) 803s + print(y) 803s + stopifnot(identical(dim(y), c(ncol, length(subset)))) 803s + # Check names attribute 803s + dimnames(x) <- dimnames 803s + y1 <- colTabulates(x, values = subset, useNames = FALSE) 803s + stopifnot(all.equal(y1, y)) 803s + if (!matrixStats:::isUseNamesNADefunct()) { 803s + y2 <- colTabulates(x, values = subset, useNames = NA) 803s + stopifnot(all.equal(y2, y)) 803s + } 803s + y <- colTabulates(x, values = subset, useNames = TRUE) 803s + stopifnot(identical(rownames(y), colnames(x))) 803s + dimnames(x) <- NULL 803s + 803s + # Raw 803s + if (mode %in% c("integer", "raw")) { 803s + subset <- c(0:2) 803s + 803s + y <- rowTabulates(x, values = as.raw(subset)) 803s + print(y) 803s + stopifnot(identical(dim(y), c(nrow, length(subset)))) 803s + # Check names attribute 803s + dimnames(x) <- dimnames 803s + y1 <- rowTabulates(x, values = as.raw(subset), useNames = FALSE) 803s + stopifnot(all.equal(y1, y)) 803s + if (!matrixStats:::isUseNamesNADefunct()) { 803s + y2 <- rowTabulates(x, values = as.raw(subset), useNames = NA) 803s + stopifnot(all.equal(y2, y)) 803s + } 803s + y3 <- rowTabulates(x, values = as.raw(subset), useNames = TRUE) 803s + stopifnot(identical(rownames(y3), rownames(x))) 803s + dimnames(x) <- NULL 803s + 803s + y2 <- colTabulates(t(x), values = as.raw(subset)) 803s + print(y2) 803s + stopifnot( 803s + identical(dim(y2), c(nrow, length(subset))), 803s + identical(y2, y) 803s + ) 803s + # Check names attribute 803s + dimnames(x) <- dimnames 803s + y1 <- colTabulates(t(x), values = as.raw(subset), useNames = FALSE) 803s + stopifnot(all.equal(y1, y)) 803s + if (!matrixStats:::isUseNamesNADefunct()) { 803s + y2 <- colTabulates(t(x), values = as.raw(subset), useNames = NA) 803s + stopifnot(all.equal(y2, y)) 803s + } 803s + y <- colTabulates(t(x), values = as.raw(subset), useNames = TRUE) 803s + stopifnot(identical(rownames(y), colnames(t(x)))) 803s + dimnames(x) <- NULL 803s + } 803s + 803s + cat(sprintf("Mode: %s...done\n", mode)) 803s + } # for (mode ...) 804s Mode: integer... 804s [,1] [,2] [,3] [,4] [,5] 804s [1,] 0 NA 2 3 4 804s [2,] NA 2 3 4 0 804s [3,] 2 3 4 0 1 804s [4,] 3 4 0 1 2 804s [5,] NA 0 1 2 3 804s [6,] 0 1 2 3 4 804s 0 1 2 3 4 804s [1,] 1 0 1 1 1 1 804s [2,] 1 0 1 1 1 1 804s [3,] 1 1 1 1 1 0 804s [4,] 1 1 1 1 1 0 804s [5,] 1 1 1 1 0 1 804s [6,] 1 1 1 1 1 0 804s 0 1 2 3 4 804s [1,] 2 0 1 1 0 2 804s [2,] 1 1 1 1 1 1 804s [3,] 1 1 2 1 1 0 804s [4,] 1 1 1 2 1 0 804s [5,] 1 1 1 1 2 0 804s 0 1 2 804s [1,] 1 0 1 1 804s [2,] 1 0 1 1 804s [3,] 1 1 1 0 804s [4,] 1 1 1 0 804s [5,] 1 1 1 1 804s [6,] 1 1 1 0 804s 0 1 2 804s [1,] 2 0 1 2 804s [2,] 1 1 1 1 804s [3,] 1 1 2 0 804s [4,] 1 1 1 0 804s [5,] 1 1 1 0 804s 0x0 0x1 0x2 804s [1,] 1 0 1 804s [2,] 1 0 1 804s [3,] 1 1 1 804s [4,] 1 1 1 804s [5,] 1 1 1 804s [6,] 1 1 1 804s 0x0 0x1 0x2 804s [1,] 1 0 1 804s [2,] 1 0 1 804s [3,] 1 1 1 804s [4,] 1 1 1 804s [5,] 1 1 1 804s [6,] 1 1 1 804s Mode: integer...done 804s Mode: logical... 804s [,1] [,2] [,3] [,4] [,5] 804s [1,] TRUE NA FALSE TRUE TRUE 804s [2,] NA FALSE TRUE TRUE TRUE 804s [3,] FALSE TRUE TRUE TRUE TRUE 804s [4,] TRUE TRUE TRUE TRUE FALSE 804s [5,] NA TRUE TRUE FALSE TRUE 804s [6,] TRUE TRUE FALSE TRUE TRUE 804s FALSE TRUE 804s [1,] 1 3 1 804s [2,] 1 3 1 804s [3,] 1 4 0 804s [4,] 1 4 0 804s [5,] 1 3 1 804s [6,] 1 4 0 804s FALSE TRUE 804s [1,] 1 3 2 804s [2,] 1 4 1 804s [3,] 2 4 0 804s [4,] 1 5 0 804s [5,] 1 5 0 804s TRUE FALSE 804s [1,] 3 1 1 804s [2,] 3 1 1 804s [3,] 4 1 0 804s [4,] 4 1 0 804s [5,] 3 1 1 804s [6,] 4 1 0 804s TRUE FALSE 804s [1,] 3 1 2 804s [2,] 4 1 1 804s [3,] 4 2 0 804s [4,] 5 1 0 804s [5,] 5 1 0 804s Mode: logical...done 804s Mode: raw... 804s [,1] [,2] [,3] [,4] [,5] 804s [1,] 00 01 02 03 04 804s [2,] 01 02 03 04 00 804s [3,] 02 03 04 00 01 804s [4,] 03 04 00 01 02 804s [5,] 04 00 01 02 03 804s [6,] 00 01 02 03 04 804s 0x0 0x1 0x2 0x3 0x4 804s [1,] 1 1 1 1 1 804s [2,] 1 1 1 1 1 804s [3,] 1 1 1 1 1 804s [4,] 1 1 1 1 1 804s [5,] 1 1 1 1 1 804s [6,] 1 1 1 1 1 804s 0x0 0x1 0x2 0x3 0x4 804s [1,] 2 1 1 1 1 804s [2,] 1 2 1 1 1 804s [3,] 1 1 2 1 1 804s [4,] 1 1 1 2 1 804s [5,] 1 1 1 1 2 804s 0 1 2 804s [1,] 1 1 1 804s [2,] 1 1 1 804s [3,] 1 1 1 804s [4,] 1 1 1 804s [5,] 1 1 1 804s [6,] 1 1 1 804s 0 1 2 804s [1,] 2 1 1 804s [2,] 1 2 1 804s [3,] 1 1 2 804s [4,] 1 1 1 804s [5,] 1 1 1 804s 0x0 0x1 0x2 804s [1,] 1 1 1 804s [2,] 1 1 1 804s [3,] 1 1 1 804s [4,] 1 1 1 804s [5,] 1 1 1 804s [6,] 1 1 1 804s 0x0 0x1 0x2 804s [1,] 1 1 1 804s [2,] 1 1 1 804s [3,] 1 1 1 804s [4,] 1 1 1 804s [5,] 1 1 1 804s [6,] 1 1 1 804s Mode: raw...done 804s > 804s 804s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 804s Copyright (C) 2024 The R Foundation for Statistical Computing 804s Platform: arm-unknown-linux-gnueabihf (32-bit) 804s 804s R is free software and comes with ABSOLUTELY NO WARRANTY. 804s You are welcome to redistribute it under certain conditions. 804s Type 'license()' or 'licence()' for distribution details. 804s 804s R is a collaborative project with many contributors. 804s Type 'contributors()' for more information and 804s 'citation()' on how to cite R or R packages in publications. 804s 804s Type 'demo()' for some demos, 'help()' for on-line help, or 804s 'help.start()' for an HTML browser interface to help. 804s Type 'q()' to quit R. 804s 804s > library("matrixStats") 804s > 804s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 804s > # Subsetted tests 804s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 804s > source("utils/validateIndicesFramework.R") 804s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 804s > storage.mode(x) <- "integer" 804s > 804s > # To check names attribute 804s > dimnames <- list(letters[1:6], LETTERS[1:6]) 804s > 804s > # Test with and without dimnames on x 804s > for (setDimnames in c(TRUE, FALSE)) { 804s + if (setDimnames) dimnames(x) <- dimnames 804s + else dimnames(x) <- NULL 804s + 804s + count <- 0L 804s + for (rows in index_cases) { 804s + for (cols in index_cases) { 804s + count <- count + 1L 804s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 804s + useNames <- useNames[count %% length(useNames) + 1] 804s + 804s + validateIndicesTestMatrix(x, rows, cols, 804s + ftest = rowTabulates, fsure = rowTabulates, useNames = useNames) 804s + validateIndicesTestMatrix(x, rows, cols, 804s + ftest = rowTabulates, fsure = rowTabulates, 804s + values = 1:3, useNames = useNames) 804s + 804s + validateIndicesTestMatrix(x, rows, cols, 804s + ftest = colTabulates, fsure = colTabulates, useNames = useNames) 804s + validateIndicesTestMatrix(x, rows, cols, 804s + ftest = colTabulates, fsure = colTabulates, 804s + values = 1:3, useNames = useNames) 804s + } 804s + } 804s + } 808s > 808s 808s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 808s Copyright (C) 2024 The R Foundation for Statistical Computing 808s Platform: arm-unknown-linux-gnueabihf (32-bit) 808s 808s R is free software and comes with ABSOLUTELY NO WARRANTY. 808s You are welcome to redistribute it under certain conditions. 808s Type 'license()' or 'licence()' for distribution details. 808s 808s R is a collaborative project with many contributors. 808s Type 'contributors()' for more information and 808s 'citation()' on how to cite R or R packages in publications. 808s 808s Type 'demo()' for some demos, 'help()' for on-line help, or 808s 'help.start()' for an HTML browser interface to help. 808s Type 'q()' to quit R. 808s 809s > library("matrixStats") 809s > 809s > fcns <- list( 809s + rowVarDiffs = list(rowVarDiffs, colVarDiffs), 809s + rowSdDiffs = list(rowSdDiffs, colSdDiffs), 809s + rowMadDiffs = list(rowMadDiffs, colMadDiffs), 809s + rowIQRDiffs = list(rowIQRDiffs, colIQRDiffs) 809s + ) 809s > 809s > for (fcn in names(fcns)) { 809s + cat(sprintf("%s()...\n", fcn)) 809s + row_fcn <- fcns[[fcn]][[1L]] 809s + col_fcn <- fcns[[fcn]][[2L]] 809s + 809s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 809s + # With and without some NAs 809s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 809s + for (mode in c("integer", "double")) { 809s + for (add_na in c(FALSE, TRUE)) { 809s + cat("add_na = ", add_na, "\n", sep = "") 809s + 809s + x <- matrix(1:50 + 0.1, nrow = 10L, ncol = 5L) 809s + if (add_na) { 809s + x[3:7, c(2, 4)] <- NA_real_ 809s + } 809s + cat("mode: ", mode, "\n", sep = "") 809s + storage.mode(x) <- mode 809s + str(x) 809s + 809s + # To check names attribute 809s + dimnames <- list(letters[1:10], LETTERS[1:5]) 809s + 809s + # Test with and without dimnames on x 809s + for (setDimnames in c(TRUE, FALSE)) { 809s + if (setDimnames) dimnames(x) <- dimnames 809s + else dimnames(x) <- NULL 809s + # Row/column ranges 809s + for (na.rm in c(FALSE, TRUE)) { 809s + # Check names attribute 809s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 809s + cat("na.rm = ", na.rm, "\n", sep = "") 809s + r1 <- row_fcn(x, na.rm = na.rm, useNames = useNames) 809s + r2 <- col_fcn(t(x), na.rm = na.rm, useNames = useNames) 809s + stopifnot(all.equal(r1, r2)) 809s + } 809s + } 809s + } 809s + } # for (add_na ...) 809s + } 809s + 809s + 809s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 809s + # All NAs 809s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 809s + for (mode in c("integer", "double")) { 809s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 809s + cat("mode: ", mode, "\n", sep = "") 809s + storage.mode(x) <- mode 809s + str(x) 809s + 809s + # Test with and without dimnames on x 809s + for (setDimnames in c(TRUE, FALSE)) { 809s + if (setDimnames) dimnames(x) <- dimnames 809s + else dimnames(x) <- NULL 809s + # Row/column ranges 809s + for (na.rm in c(FALSE, TRUE)) { 809s + # Check names attribute 809s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 809s + cat("na.rm = ", na.rm, "\n", sep = "") 809s + r1 <- row_fcn(x, na.rm = na.rm, useNames = useNames) 809s + r2 <- col_fcn(t(x), na.rm = na.rm, useNames = useNames) 809s + stopifnot(all.equal(r1, r2)) 809s + } 809s + } 809s + } 809s + } 809s + 809s + 809s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 809s + # A 1x1 matrix 809s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 809s + x <- matrix(0, nrow = 1L, ncol = 1L) 809s + dimnames <- list("a", "A") 809s + # Test with and without dimnames on x 809s + for (setDimnames in c(TRUE, FALSE)) { 809s + if (setDimnames) dimnames(x) <- dimnames 809s + else dimnames(x) <- NULL 809s + # Row/column ranges 809s + for (na.rm in c(FALSE, TRUE)) { 809s + # Check names attribute 809s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 809s + cat("na.rm = ", na.rm, "\n", sep = "") 809s + r1 <- row_fcn(x, na.rm = na.rm, useNames = useNames) 809s + r2 <- col_fcn(t(x), na.rm = na.rm, useNames = useNames) 809s + stopifnot(all.equal(r1, r2)) 809s + } 809s + } 809s + } 809s + 809s + cat(sprintf("%s()...DONE\n", fcn)) 809s + } # for (fcn ...) 809s rowVarDiffs()... 809s add_na = FALSE 809s mode: integer 809s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s add_na = TRUE 809s mode: integer 809s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s add_na = FALSE 809s mode: double 809s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s add_na = TRUE 809s mode: double 809s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s mode: integer 809s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s mode: double 809s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s rowVarDiffs()...DONE 809s rowSdDiffs()... 809s add_na = FALSE 809s mode: integer 809s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s add_na = TRUE 809s mode: integer 809s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s add_na = FALSE 809s mode: double 809s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s add_na = TRUE 809s mode: double 809s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s mode: integer 809s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s mode: double 809s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s rowSdDiffs()...DONE 809s rowMadDiffs()... 809s add_na = FALSE 809s mode: integer 809s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s add_na = TRUE 809s mode: integer 809s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s add_na = FALSE 809s mode: double 809s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s add_na = TRUE 809s mode: double 809s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s mode: integer 809s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s mode: double 809s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s rowMadDiffs()...DONE 809s rowIQRDiffs()... 809s add_na = FALSE 809s mode: integer 809s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s add_na = TRUE 809s mode: integer 809s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s add_na = FALSE 809s mode: double 809s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s add_na = TRUE 809s mode: double 809s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s mode: integer 809s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s mode: double 809s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s na.rm = FALSE 809s na.rm = FALSE 809s na.rm = TRUE 809s na.rm = TRUE 809s rowIQRDiffs()...DONE 809s > 810s 810s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 810s Copyright (C) 2024 The R Foundation for Statistical Computing 810s Platform: arm-unknown-linux-gnueabihf (32-bit) 810s 810s R is free software and comes with ABSOLUTELY NO WARRANTY. 810s You are welcome to redistribute it under certain conditions. 810s Type 'license()' or 'licence()' for distribution details. 810s 810s R is a collaborative project with many contributors. 810s Type 'contributors()' for more information and 810s 'citation()' on how to cite R or R packages in publications. 810s 810s Type 'demo()' for some demos, 'help()' for on-line help, or 810s 'help.start()' for an HTML browser interface to help. 810s Type 'q()' to quit R. 810s 810s > library("matrixStats") 810s > 810s > fcns <- list( 810s + madDiff = c(rowMadDiffs, colMadDiffs), 810s + iqrDiff = c(rowIQRDiffs, colIQRDiffs) 810s + ) 810s > 810s > 810s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 810s > # Subsetted tests 810s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 810s > source("utils/validateIndicesFramework.R") 810s > # To check names attribute 810s > dimnames <- list(letters[1:6], LETTERS[1:6]) 810s > trim <- runif(1, min = 0, max = 0.5) 810s > for (fcn in names(fcns)) { 810s + cat(sprintf("subsetted tests on %s()...\n", fcn)) 810s + row_fcn <- fcns[[fcn]][[1L]] 810s + col_fcn <- fcns[[fcn]][[2L]] 810s + 810s + for (mode in c("numeric", "integer")) { 810s + x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6L, ncol = 6L) 810s + storage.mode(x) <- mode 810s + if (mode == "numeric") x[1:2, 3:4] <- Inf 810s + 810s + # Test with and without dimnames on x 810s + for (setDimnames in c(TRUE, FALSE)) { 810s + if (setDimnames) dimnames(x) <- dimnames 810s + else dimnames(x) <- NULL 810s + 810s + count <- 0L 810s + for (diff in 1:2) { 810s + for (rows in index_cases) { 810s + for (cols in index_cases) { 810s + count <- count + 1L 810s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 810s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 810s + useNames <- useNames[count %% length(useNames) + 1] 810s + validateIndicesTestMatrix(x, rows, cols, 810s + ftest = row_fcn, fsure = row_fcn, 810s + na.rm = na.rm, diff = diff, trim = trim, useNames = useNames) 810s + validateIndicesTestMatrix(x, rows, cols, 810s + fcoltest = col_fcn, fsure = row_fcn, 810s + na.rm = na.rm, diff = diff, trim = trim, useNames = useNames) 810s + } 810s + } 810s + } 810s + } 810s + } 810s + cat(sprintf("%s()...DONE\n", fcn)) 810s + } 810s subsetted tests on madDiff()... 818s madDiff()...DONE 818s subsetted tests on iqrDiff()... 825s iqrDiff()...DONE 825s > 825s 825s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 825s Copyright (C) 2024 The R Foundation for Statistical Computing 825s Platform: arm-unknown-linux-gnueabihf (32-bit) 825s 825s R is free software and comes with ABSOLUTELY NO WARRANTY. 825s You are welcome to redistribute it under certain conditions. 825s Type 'license()' or 'licence()' for distribution details. 825s 825s R is a collaborative project with many contributors. 825s Type 'contributors()' for more information and 825s 'citation()' on how to cite R or R packages in publications. 825s 825s Type 'demo()' for some demos, 'help()' for on-line help, or 825s 'help.start()' for an HTML browser interface to help. 825s Type 'q()' to quit R. 825s 825s > library("matrixStats") 825s > 825s > fcns <- list( 825s + varDiff = c(rowVarDiffs, colVarDiffs), 825s + sdDiff = c(rowSdDiffs, colSdDiffs) 825s + ) 825s > 825s > 825s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 825s > # Subsetted tests 825s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 825s > source("utils/validateIndicesFramework.R") 825s > # To check names attribute 825s > dimnames <- list(letters[1:6], LETTERS[1:6]) 825s > trim <- runif(1, min = 0, max = 0.5) 825s > for (fcn in names(fcns)) { 825s + cat(sprintf("subsetted tests on %s()...\n", fcn)) 825s + row_fcn <- fcns[[fcn]][[1L]] 825s + col_fcn <- fcns[[fcn]][[2L]] 825s + 825s + for (mode in c("numeric", "integer")) { 825s + x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6L, ncol = 6L) 825s + storage.mode(x) <- mode 825s + if (mode == "numeric") x[1:2, 3:4] <- Inf 825s + 825s + # Test with and without dimnames on x 825s + for (setDimnames in c(TRUE, FALSE)) { 825s + if (setDimnames) dimnames(x) <- dimnames 825s + else dimnames(x) <- NULL 825s + 825s + count <- 0L 825s + for (diff in 1:2) { 825s + for (rows in index_cases) { 825s + for (cols in index_cases) { 825s + count <- count + 1L 825s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 825s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 825s + useNames <- useNames[count %% length(useNames) + 1] 825s + 825s + validateIndicesTestMatrix(x, rows, cols, 825s + ftest = row_fcn, fsure = row_fcn, 825s + na.rm = na.rm, diff = diff, trim = trim, useNames = useNames) 825s + validateIndicesTestMatrix(x, rows, cols, 825s + fcoltest = col_fcn, fsure = row_fcn, 825s + na.rm = na.rm, diff = diff, trim = trim, useNames = useNames) 825s + } 825s + } 825s + } 825s + } 825s + } 825s + cat(sprintf("%s()...DONE\n", fcn)) 825s + } 826s subsetted tests on varDiff()... 831s varDiff()...DONE 831s subsetted tests on sdDiff()... 836s sdDiff()...DONE 836s > 836s 836s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 836s Copyright (C) 2024 The R Foundation for Statistical Computing 836s Platform: arm-unknown-linux-gnueabihf (32-bit) 836s 836s R is free software and comes with ABSOLUTELY NO WARRANTY. 836s You are welcome to redistribute it under certain conditions. 836s Type 'license()' or 'licence()' for distribution details. 836s 836s R is a collaborative project with many contributors. 836s Type 'contributors()' for more information and 836s 'citation()' on how to cite R or R packages in publications. 836s 836s Type 'demo()' for some demos, 'help()' for on-line help, or 836s 'help.start()' for an HTML browser interface to help. 836s Type 'q()' to quit R. 836s 836s > library("matrixStats") 836s > 836s > ## Always allow testing of the 'center' argument (as long as it's not defunct) 836s > options(matrixStats.center.onUse = "ignore") 836s > options(matrixStats.vars.formula.freq = Inf) 836s > 836s > ## Create isFALSE() if running on an old version of R 836s > if (!exists("isFALSE", mode="function")) { 836s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 836s + } 836s > 836s > rowVars_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 836s + suppressWarnings({ 836s + res <- apply(x, MARGIN = 1L, FUN = var, na.rm = na.rm) 836s + }) 836s + stopifnot(!any(is.infinite(res))) 836s + 836s + # Keep naming support consistency same as rowVars() 836s + if (is.null(center) || ncol(x) <= 1L) { 836s + if (is.na(useNames) || isFALSE(useNames)) names(res) <- NULL 836s + } 836s + else if (isFALSE(useNames)) names(res) <- NULL 836s + res 836s + } 836s > 836s > colVars_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 836s + suppressWarnings({ 836s + res <- apply(x, MARGIN = 2L, FUN = var, na.rm = na.rm) 836s + }) 836s + stopifnot(!any(is.infinite(res))) 836s + 836s + # Keep naming support consistency same as colVars() 836s + if (is.null(center) || ncol(x) <= 1L) { 836s + if (is.na(useNames) || isFALSE(useNames)) names(res) <- NULL 836s + } 836s + else if (isFALSE(useNames)) names(res) <- NULL 836s + res 836s + } 836s > 836s > 836s > rowVars_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 836s + center <- rowWeightedMeans(x, cols = cols, na.rm = na.rm, useNames = FALSE) 836s + res <- rowVars(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 836s + stopifnot(!any(is.infinite(res))) 836s + res 836s + } 836s > 836s > colVars_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 836s + center <- colWeightedMeans(x, rows = rows, na.rm = na.rm, useNames = FALSE) 836s + res <- colVars(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 836s + stopifnot(!any(is.infinite(res))) 836s + res 836s + } 836s > 836s > rowVars_center_naive <- function(x, rows = NULL, cols = NULL, center = NULL, na.rm = FALSE, ..., useNames = NA) { 836s + x <- sweep(x, MARGIN = 1, STATS = as.array(center), FUN = "-") 836s + x[is.infinite(center), ] <- NaN 836s + res <- rowVars(x, rows = rows, cols = cols, center = rep(0, times = nrow(x)), na.rm = na.rm, useNames = useNames) 836s + stopifnot(!any(is.infinite(res))) 836s + res 836s + } 836s > 836s > colVars_center_naive <- function(x, rows = NULL, cols = NULL, center = NULL, na.rm = FALSE, ..., useNames = NA) { 836s + x <- sweep(x, MARGIN = 2, STATS = as.array(center), FUN = "-") 836s + x[, is.infinite(center)] <- NaN 836s + res <- colVars(x, rows = rows, cols = cols, center = rep(0, times = ncol(x)), na.rm = na.rm, useNames = useNames) 836s + stopifnot(!any(is.infinite(res))) 836s + res 836s + } 836s > 836s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 836s > # With and without some NAs or Infs 836s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 836s > for (mode in c("integer", "double")) { 836s + if (mode == "integer") { 836s + specials <- c(0L, NA_integer_) 836s + delta <- 0L 836s + } else { 836s + specials <- c(0, NA_real_, Inf) 836s + delta <- 0.1 836s + } 836s + 836s + for (special in specials) { 836s + cat("special = ", special, "\n", sep = "") 836s + x <- matrix(1:50 + delta, nrow = 10L, ncol = 5L) 836s + x[3:7, c(2, 4)] <- special 836s + cat("mode: ", mode, "\n", sep = "") 836s + str(x) 836s + stopifnot(storage.mode(x) == mode) 836s + 836s + # To check names attribute 836s + dimnames <- list(letters[1:10], LETTERS[1:5]) 836s + 836s + # Test with and without dimnames on x 836s + for (setDimnames in c(TRUE, FALSE)) { 836s + if (setDimnames) dimnames(x) <- dimnames 836s + else dimnames(x) <- NULL 836s + # Row/column variance 836s + for (na.rm in c(FALSE, TRUE)) { 836s + # Check names attribute 836s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 836s + cat("na.rm = ", na.rm, "\n", sep = "") 836s + center <- rowMeans(x, na.rm = na.rm) 836s + 836s + r0 <- rowVars_R(x, na.rm = na.rm, useNames = useNames) 836s + r1 <- rowVars(x, na.rm = na.rm, useNames = useNames) 836s + r1b <- rowVars_center(x, na.rm = na.rm, useNames = useNames) 836s + r1c <- rowVars(x, center = center, na.rm = na.rm, useNames = useNames) 836s + 836s + tx <- t(x) 836s + r2 <- colVars(tx, na.rm = na.rm, useNames = useNames) 836s + r2b <- colVars_center(tx, na.rm = na.rm, useNames = useNames) 836s + r2c <- colVars(tx, center = center, na.rm = na.rm, useNames = useNames) 836s + tx <- NULL 836s + 836s + stopifnot(all.equal(r1, r2)) 836s + stopifnot(all.equal(r1, r0)) 836s + stopifnot(all.equal(r1b, r1c)) 836s + stopifnot(all.equal(r2, r0)) 836s + stopifnot(all.equal(r2b, r2c)) 836s + 836s + center <- colMeans(x, na.rm = na.rm) 836s + 836s + r3 <- colVars(x, center = center, na.rm = na.rm, useNames = useNames) 836s + r3b <- colVars_center_naive(x, center = center, na.rm = na.rm, useNames = useNames) 836s + r3c <- rowVars(t(x), center = center, na.rm = na.rm, useNames = useNames) 836s + r3d <- rowVars_center_naive(t(x), center = center, na.rm = na.rm, useNames = useNames) 836s + stopifnot(all.equal(r3b, r3)) 836s + stopifnot(all.equal(r3c, r3)) 836s + stopifnot(all.equal(r3d, r3)) 836s + 836s + stopifnot( 836s + !any(is.infinite(r0)), 836s + !any(is.infinite(r1)), 836s + !any(is.infinite(r2)), 836s + !any(is.infinite(r3)), 836s + !any(is.infinite(r1b)), 836s + !any(is.infinite(r1c)), 836s + !any(is.infinite(r2b)), 836s + !any(is.infinite(r2c)), 836s + !any(is.infinite(r3b)), 836s + !any(is.infinite(r3c)), 836s + !any(is.infinite(r3d)) 836s + ) 836s + } 836s + } 836s + } 836s + } # for (special ...) 836s + } 836s special = 0 836s mode: integer 836s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 836s na.rm = FALSE 836s na.rm = FALSE 836s na.rm = TRUE 836s na.rm = TRUE 836s na.rm = FALSE 836s na.rm = FALSE 836s na.rm = TRUE 836s na.rm = TRUE 836s special = NA 836s mode: integer 836s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 836s na.rm = FALSE 836s na.rm = FALSE 836s na.rm = TRUE 836s na.rm = TRUE 836s na.rm = FALSE 836s na.rm = FALSE 836s na.rm = TRUE 836s na.rm = TRUE 836s special = 0 836s mode: double 836s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 836s na.rm = FALSE 836s na.rm = FALSE 836s na.rm = TRUE 836s na.rm = TRUE 836s na.rm = FALSE 836s na.rm = FALSE 836s na.rm = TRUE 836s na.rm = TRUE 836s special = NA 836s mode: double 836s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 836s na.rm = FALSE 836s na.rm = FALSE 836s na.rm = TRUE 836s na.rm = TRUE 836s na.rm = FALSE 836s na.rm = FALSE 836s na.rm = TRUE 836s na.rm = TRUE 836s special = Inf 836s mode: double 836s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 836s na.rm = FALSE 836s na.rm = FALSE 836s na.rm = TRUE 836s na.rm = TRUE 836s na.rm = FALSE 837s na.rm = FALSE 837s na.rm = TRUE 837s na.rm = TRUE 837s > 837s > 837s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 837s > # All NAs 837s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 837s > for (mode in c("integer", "double")) { 837s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 837s + cat("mode: ", mode, "\n", sep = "") 837s + storage.mode(x) <- mode 837s + str(x) 837s + 837s + # Test with and without dimnames on x 837s + for (setDimnames in c(TRUE, FALSE)) { 837s + if (setDimnames) dimnames(x) <- dimnames 837s + else dimnames(x) <- NULL 837s + # Row/column variance 837s + for (na.rm in c(FALSE, TRUE)) { 837s + # Check names attribute 837s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 837s + cat("na.rm = ", na.rm, "\n", sep = "") 837s + 837s + r0 <- rowVars_R(x, na.rm = na.rm, useNames = useNames) 837s + r1 <- rowVars(x, na.rm = na.rm, useNames = useNames) 837s + r1b <- rowVars_center(x, na.rm = na.rm, useNames = useNames) 837s + r2 <- colVars(t(x), na.rm = na.rm, useNames = useNames) 837s + r2b <- colVars_center(t(x), na.rm = na.rm, useNames = useNames) 837s + stopifnot(all.equal(r1, r2)) 837s + stopifnot(all.equal(r1, r0)) 837s + stopifnot(all.equal(r2, r0)) 837s + stopifnot(all.equal(r1b, r2b)) 837s + stopifnot( 837s + !any(is.infinite(r0)), 837s + !any(is.infinite(r1)), 837s + !any(is.infinite(r2)), 837s + !any(is.infinite(r1b)), 837s + !any(is.infinite(r2b)) 837s + ) 837s + } 837s + } 837s + } 837s + } 837s mode: integer 837s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 837s na.rm = FALSE 837s na.rm = FALSE 837s na.rm = TRUE 837s na.rm = TRUE 837s na.rm = FALSE 837s na.rm = FALSE 837s na.rm = TRUE 837s na.rm = TRUE 837s mode: double 837s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 837s na.rm = FALSE 837s na.rm = FALSE 837s na.rm = TRUE 837s na.rm = TRUE 837s na.rm = FALSE 837s na.rm = FALSE 837s na.rm = TRUE 837s na.rm = TRUE 837s > 837s > 837s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 837s > # A 1x1 matrix 837s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 837s > x <- matrix(0, nrow = 1L, ncol = 1L) 837s > dimnames <- list("a", "A") 837s > # Test with and without dimnames on x 837s > for (setDimnames in c(TRUE, FALSE)) { 837s + if (setDimnames) dimnames(x) <- dimnames 837s + else dimnames(x) <- NULL 837s + # Row/column variance 837s + for (na.rm in c(FALSE, TRUE)) { 837s + # Check names attribute 837s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 837s + cat("na.rm = ", na.rm, "\n", sep = "") 837s + 837s + r0 <- rowVars_R(x, na.rm = na.rm, useNames = useNames) 837s + r1 <- rowVars(x, na.rm = na.rm, useNames = useNames) 837s + r1b <- rowVars_center(x, na.rm = na.rm, useNames = useNames) 837s + r2 <- colVars(t(x), na.rm = na.rm, useNames = useNames) 837s + r2b <- colVars_center(t(x), na.rm = na.rm, useNames = useNames) 837s + stopifnot(all.equal(r1, r2)) 837s + stopifnot(all.equal(r1, r0)) 837s + stopifnot(all.equal(r2, r0)) 837s + stopifnot(all.equal(r1b, r2b)) 837s + stopifnot( 837s + !any(is.infinite(r0)), 837s + !any(is.infinite(r1)), 837s + !any(is.infinite(r2)), 837s + !any(is.infinite(r1b)), 837s + !any(is.infinite(r2b)) 837s + ) 837s + } 837s + } 837s + } 837s na.rm = FALSE 837s na.rm = FALSE 837s na.rm = TRUE 837s na.rm = TRUE 837s na.rm = FALSE 837s na.rm = FALSE 837s na.rm = TRUE 837s na.rm = TRUE 837s > 837s > 837s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 837s > # center and .dim 837s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 837s > m <- matrix(1:12, nrow = 3L, ncol = 4L) 837s > a <- array(m, dim = c(3, 2, 2)) 837s > stopifnot(prod(dim(a)) == prod(dim(m))) 837s > 837s > y0 <- rowVars(m, dim. = dim(m)) 837s > print(y0) 837s [1] 15 15 15 837s > y1 <- rowVars(a, dim. = dim(m)) 837s > print(y1) 837s [1] 15 15 15 837s > stopifnot(identical(y1, y0)) 837s > stopifnot( 837s + !any(is.infinite(y0)), 837s + !any(is.infinite(y1)) 837s + ) 837s > 837s > mu <- rowMeans(m) 837s > y0 <- rowVars(m, center = mu, dim. = dim(m)) 837s > print(y0) 837s [1] 15 15 15 837s > y1 <- rowVars(a, center = mu, dim. = dim(m)) 837s > print(y1) 837s [1] 15 15 15 837s > stopifnot(identical(y1, y0)) 837s > stopifnot( 837s + !any(is.infinite(y0)), 837s + !any(is.infinite(y1)) 837s + ) 837s > 837s > 837s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 837s > # Corner cases 837s > # https://github.com/HenrikBengtsson/matrixStats/issues/195 837s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 837s > x <- matrix(c(1,2,3,4), nrow = 2L, ncol = 2L) 837s > x[1,1] <- NA_real_ 837s > x[1,2] <- Inf 837s > 837s > center <- colMeans2(x, na.rm = TRUE) 837s > y <- colVars(x, center = center, na.rm = TRUE) 837s > stopifnot(!any(is.infinite(y))) 837s > 837s > x <- t(x) 837s > center <- rowMeans2(x, na.rm = TRUE) 837s > y <- rowVars(x, center = center, na.rm = TRUE) 837s > stopifnot(!any(is.infinite(y))) 837s > 837s 837s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 837s Copyright (C) 2024 The R Foundation for Statistical Computing 837s Platform: arm-unknown-linux-gnueabihf (32-bit) 837s 837s R is free software and comes with ABSOLUTELY NO WARRANTY. 837s You are welcome to redistribute it under certain conditions. 837s Type 'license()' or 'licence()' for distribution details. 837s 837s R is a collaborative project with many contributors. 837s Type 'contributors()' for more information and 837s 'citation()' on how to cite R or R packages in publications. 837s 837s Type 'demo()' for some demos, 'help()' for on-line help, or 837s 'help.start()' for an HTML browser interface to help. 837s Type 'q()' to quit R. 837s 837s > library("matrixStats") 837s > 837s > ## Always allow testing of the 'center' argument (as long as it's not defunct) 837s > options(matrixStats.center.onUse = "ignore") 837s > 837s > ## Create isFALSE() if running on an old version of R 837s > if (!exists("isFALSE", mode="function")) { 837s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 837s + } 837s > 837s > rowVars_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 837s + suppressWarnings({ 837s + res <- apply(x, MARGIN = 1L, FUN = var, na.rm = na.rm) 837s + }) 837s + stopifnot(!any(is.infinite(res))) 837s + 837s + # Keep naming support consistency same as rowVars() 837s + if (is.null(center) || ncol(x) <= 1L) { 837s + if (is.na(useNames) || isFALSE(useNames)) names(res) <- NULL 837s + } 837s + else if (isFALSE(useNames)) names(res) <- NULL 837s + res 837s + } 837s > 837s > colVars_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 837s + suppressWarnings({ 837s + res <- apply(x, MARGIN = 2L, FUN = var, na.rm = na.rm) 837s + }) 837s + stopifnot(!any(is.infinite(res))) 837s + 837s + # Keep naming support consistency same as colVars() 837s + if (is.null(center) || nrow(x) <= 1L) { 837s + if (is.na(useNames) || isFALSE(useNames)) names(res) <- NULL 837s + } 837s + else if (isFALSE(useNames)) names(res) <- NULL 837s + res 837s + } 837s > 837s > 837s > rowVars_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 837s + center <- rowWeightedMeans(x, cols = cols, na.rm = na.rm, useNames = FALSE) 837s + res <- rowVars(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 837s + stopifnot(!any(is.infinite(res))) 837s + res 837s + } 837s > 837s > colVars_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 837s + center <- colWeightedMeans(x, rows = rows, na.rm = na.rm, useNames = FALSE) 837s + res <- colVars(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 837s + stopifnot(!any(is.infinite(res))) 837s + res 837s + } 837s > 837s > 837s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 837s > # Subsetted tests 837s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 837s > source("utils/validateIndicesFramework.R") 837s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 837s > storage.mode(x) <- "integer" 837s > 837s > # To check names attribute 837s > dimnames <- list(letters[1:6], LETTERS[1:6]) 837s > 837s > # Test with and without dimnames on x 837s > for (setDimnames in c(TRUE, FALSE)) { 837s + if (setDimnames) dimnames(x) <- dimnames 837s + else dimnames(x) <- NULL 837s + 837s + count <- 0L 837s + for (rows in index_cases) { 837s + for (cols in index_cases) { 837s + count <- count + 1L 837s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 837s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 837s + useNames <- useNames[count %% length(useNames) + 1] 837s + 837s + validateIndicesTestMatrix(x, rows, cols, 837s + ftest = rowVars, fsure = rowVars_R, 837s + na.rm = na.rm, useNames = useNames) 837s + validateIndicesTestMatrix(x, rows, cols, 837s + ftest = rowVars_center, fsure = rowVars_R, 837s + na.rm = na.rm, center = TRUE, useNames = useNames) 837s + 837s + validateIndicesTestMatrix(x, rows, cols, 837s + fcoltest = colVars, fsure = rowVars_R, 837s + na.rm = na.rm, useNames = useNames) 837s + validateIndicesTestMatrix(x, rows, cols, 837s + fcoltest = colVars_center, fsure = rowVars_R, 837s + na.rm = na.rm, center = TRUE, useNames = useNames) 837s + } 837s + } 837s + } 840s > 840s 840s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 840s Copyright (C) 2024 The R Foundation for Statistical Computing 840s Platform: arm-unknown-linux-gnueabihf (32-bit) 840s 840s R is free software and comes with ABSOLUTELY NO WARRANTY. 840s You are welcome to redistribute it under certain conditions. 840s Type 'license()' or 'licence()' for distribution details. 840s 840s R is a collaborative project with many contributors. 840s Type 'contributors()' for more information and 840s 'citation()' on how to cite R or R packages in publications. 840s 840s Type 'demo()' for some demos, 'help()' for on-line help, or 840s 'help.start()' for an HTML browser interface to help. 840s Type 'q()' to quit R. 840s 840s > library("matrixStats") 840s > 840s > ## Create isFALSE() if running on an old version of R 840s > if (!exists("isFALSE", mode="function")) { 840s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 840s + } 840s > 840s > rowWeightedMeans_R <- function(x, w, na.rm = FALSE, ..., useNames = NA) { 840s + res <- apply(x, MARGIN = 1L, FUN = weighted.mean, w = w, na.rm = na.rm, ...) 840s + 840s + # Keep naming support consistency same as rowWeightedMeans() 840s + idxs <- which(is.na(w) | w != 0) 840s + nw <- length(idxs) 840s + if (na.rm) na.rm <- anyMissing(x) 840s + if ((!is.null(w) && nw == 0L) || isFALSE(na.rm)) { 840s + if (is.na(useNames) || !useNames) names(res) <- NULL 840s + } 840s + else if (isFALSE(useNames)) names(res) <- NULL 840s + 840s + res 840s + } 840s > 840s > colWeightedMeans_R <- function(x, w, na.rm = FALSE, ..., useNames = NA) { 840s + res <- apply(x, MARGIN = 2L, FUN = weighted.mean, w = w, na.rm = na.rm, ...) 840s + 840s + # Keep naming support consistency same as colWeightedMeans() 840s + idxs <- which(is.na(w) | w != 0) 840s + nw <- length(idxs) 840s + if (!is.null(w) && nw == 0L) { 840s + if (is.na(useNames) || !useNames) names(res) <- NULL 840s + } 840s + else if (isFALSE(useNames)) names(res) <- NULL 840s + 840s + res 840s + } 840s > 840s > set.seed(1) 840s > 840s > x <- matrix(rnorm(20), nrow = 5, ncol = 4) 840s > print(x) 840s [,1] [,2] [,3] [,4] 840s [1,] -0.6264538 -0.8204684 1.5117812 -0.04493361 840s [2,] 0.1836433 0.4874291 0.3898432 -0.01619026 840s [3,] -0.8356286 0.7383247 -0.6212406 0.94383621 840s [4,] 1.5952808 0.5757814 -2.2146999 0.82122120 840s [5,] 0.3295078 -0.3053884 1.1249309 0.59390132 840s > 840s > # To check names attribute 840s > dimnames <- list(letters[1:5], LETTERS[1:4]) 840s > 840s > # Non-weighted row averages 840s > x_est0 <- rowMeans(x) 840s > x_est1 <- rowWeightedMeans(x) 840s > print(x_est1) 840s [1] 0.004981341 0.261181337 0.056322931 0.194395865 0.435737906 840s > stopifnot(all.equal(x_est1, x_est0)) 840s > x_est2 <- colWeightedMeans(t(x)) 840s > stopifnot(all.equal(x_est2, x_est0)) 840s > # Check names attribute 840s > dimnames(x) <- dimnames 840s > x_est1 <- rowWeightedMeans(x, useNames = FALSE) 840s > x_est2 <- colWeightedMeans(t(x), useNames = FALSE) 840s > stopifnot(all.equal(x_est1, x_est0)) 840s > stopifnot(all.equal(x_est2, x_est0)) 840s > x_est0 <- rowMeans(x) 840s > x_est1 <- rowWeightedMeans(x, useNames = TRUE) 840s > x_est2 <- colWeightedMeans(t(x), useNames = TRUE) 840s > stopifnot(all.equal(x_est1, x_est0)) 840s > stopifnot(all.equal(x_est2, x_est0)) 840s > dimnames(x) <- NULL 840s > 840s > 840s > # Weighted row averages (uniform weights) 840s > w <- rep(2.5, times = ncol(x)) 840s > x_est0 <- rowMeans(x) 840s > x_est1 <- rowWeightedMeans(x, w = w) 840s > print(x_est1) 840s [1] 0.004981341 0.261181337 0.056322931 0.194395865 0.435737906 840s > stopifnot(all.equal(x_est1, x_est0)) 840s > x_est2 <- colWeightedMeans(t(x), w = w) 840s > stopifnot(all.equal(x_est2, x_est0)) 840s > # Test with and without dimnames on x 840s > for (setDimnames in c(TRUE, FALSE)) { 840s + if (setDimnames) dimnames(x) <- dimnames 840s + else dimnames(x) <- NULL 840s + # Check names attribute 840s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 840s + x_est0 <- rowWeightedMeans_R(x, w = w, useNames = useNames) 840s + x_est1 <- rowWeightedMeans(x, w = w, useNames = useNames) 840s + stopifnot(all.equal(x_est1, x_est0)) 840s + x_est0 <- colWeightedMeans_R(t(x), w = w, useNames = useNames) 840s + x_est1 <- colWeightedMeans(t(x), w = w, useNames = useNames) 840s + stopifnot(all.equal(x_est1, x_est0)) 840s + } 840s + } 840s > 840s > 840s > # Weighted row averages (excluding some columns) 840s > w <- c(1, 1, 0, 1) 840s > x_est0 <- rowMeans(x[, (w == 1), drop = FALSE]) 840s > x_est1 <- rowWeightedMeans(x, w = w) 840s > print(x_est1) 840s [1] -0.4972853 0.2182940 0.2821774 0.9974278 0.2060069 840s > stopifnot(all.equal(x_est1, x_est0)) 840s > x_est2 <- colWeightedMeans(t(x), w = w) 840s > stopifnot(all.equal(x_est2, x_est0)) 840s > # Test with and without dimnames on x 840s > for (setDimnames in c(TRUE, FALSE)) { 840s + if (setDimnames) dimnames(x) <- dimnames 840s + else dimnames(x) <- NULL 840s + # Check names attribute 840s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 840s + x_est0 <- rowWeightedMeans_R(x, w = w, useNames = useNames) 840s + x_est1 <- rowWeightedMeans(x, w = w, useNames = useNames) 840s + stopifnot(all.equal(x_est1, x_est0)) 840s + x_est0 <- colWeightedMeans_R(t(x), w = w, useNames = useNames) 840s + x_est1 <- colWeightedMeans(t(x), w = w, useNames = useNames) 840s + stopifnot(all.equal(x_est1, x_est0)) 840s + } 840s + } 840s > 840s > 840s > # Weighted row averages (excluding some columns) 840s > w <- c(0, 1, 0, 0) 840s > x_est0 <- rowMeans(x[, (w == 1), drop = FALSE]) 840s > x_est1 <- rowWeightedMeans(x, w = w) 840s > stopifnot(all.equal(x_est1, x_est0)) 840s > x_est2 <- colWeightedMeans(t(x), w = w) 840s > stopifnot(all.equal(x_est2, x_est0)) 840s > # Test with and without dimnames on x 840s > for (setDimnames in c(TRUE, FALSE)) { 840s + if (setDimnames) dimnames(x) <- dimnames 840s + else dimnames(x) <- NULL 840s + # Check names attribute 840s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 840s + x_est0 <- rowWeightedMeans_R(x, w = w, useNames = useNames) 840s + x_est1 <- rowWeightedMeans(x, w = w, useNames = useNames) 840s + stopifnot(all.equal(x_est1, x_est0)) 840s + x_est0 <- colWeightedMeans_R(t(x), w = w, useNames = useNames) 840s + x_est1 <- colWeightedMeans(t(x), w = w, useNames = useNames) 840s + stopifnot(all.equal(x_est1, x_est0)) 840s + } 840s + } 840s > 840s > 840s > # Weighted row averages (all zero weights) 840s > w <- c(0, 0, 0, 0) 840s > x_est0 <- rowMeans(x[, (w == 1), drop = FALSE]) 840s > x_est1 <- rowWeightedMeans(x, w = w) 840s > stopifnot(all.equal(x_est1, x_est0)) 840s > x_est2 <- colWeightedMeans(t(x), w = w) 840s > stopifnot(all.equal(x_est2, x_est0)) 840s > # Test with and without dimnames on x 840s > for (setDimnames in c(TRUE, FALSE)) { 840s + if (setDimnames) dimnames(x) <- dimnames 840s + else dimnames(x) <- NULL 840s + # Check names attribute 840s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 840s + x_est0 <- rowWeightedMeans_R(x, w = w, useNames = useNames) 840s + x_est1 <- rowWeightedMeans(x, w = w, useNames = useNames) 840s + stopifnot(all.equal(x_est1, x_est0)) 840s + x_est0 <- colWeightedMeans_R(t(x), w = w, useNames = useNames) 840s + x_est1 <- colWeightedMeans(t(x), w = w, useNames = useNames) 840s + stopifnot(all.equal(x_est1, x_est0)) 840s + } 840s + } 840s > 840s > 840s > # Weighted averages by rows and columns 840s > w <- 1:4 840s > x_est1 <- rowWeightedMeans(x, w = w) 840s > print(x_est1) 840s [1] 0.20882185 0.22632701 0.25526439 -0.06123714 0.54691290 840s > x_est2 <- colWeightedMeans(t(x), w = w) 840s > stopifnot(all.equal(x_est2, x_est1)) 840s > # Test with and without dimnames on x 840s > for (setDimnames in c(TRUE, FALSE)) { 840s + if (setDimnames) dimnames(x) <- dimnames 840s + else dimnames(x) <- NULL 840s + # Check names attribute 840s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 840s + x_est0 <- rowWeightedMeans_R(x, w = w, useNames = useNames) 840s + x_est1 <- rowWeightedMeans(x, w = w, useNames = useNames) 840s + stopifnot(all.equal(x_est1, x_est0)) 840s + x_est0 <- colWeightedMeans_R(t(x), w = w, useNames = useNames) 840s + x_est1 <- colWeightedMeans(t(x), w = w, useNames = useNames) 840s + stopifnot(all.equal(x_est1, x_est0)) 840s + } 840s + } 840s > 840s > 840s > x[sample(length(x), size = 0.3 * length(x))] <- NA 840s > print(x) 840s [,1] [,2] [,3] [,4] 840s [1,] -0.6264538 NA 1.5117812 -0.04493361 840s [2,] 0.1836433 NA NA -0.01619026 840s [3,] -0.8356286 0.7383247 -0.6212406 0.94383621 840s [4,] 1.5952808 NA -2.2146999 0.82122120 840s [5,] 0.3295078 NA NA 0.59390132 840s > 840s > # Non-weighted row averages with missing values 840s > x_est0 <- rowMeans(x, na.rm = TRUE) 840s > x_est1 <- rowWeightedMeans(x, na.rm = TRUE) 840s > print(x_est1) 840s [1] 0.28013125 0.08372653 0.05632293 0.06726737 0.46170455 840s > stopifnot(all.equal(x_est1, x_est0)) 840s > x_est2 <- colWeightedMeans(t(x), na.rm = TRUE) 840s > stopifnot(all.equal(x_est2, x_est0)) 840s > # Check names attribute 840s > dimnames(x) <- dimnames 840s > x_est1 <- rowWeightedMeans(x, na.rm = TRUE, useNames = FALSE) 840s > x_est2 <- colWeightedMeans(t(x), na.rm = TRUE, useNames = FALSE) 840s > stopifnot(all.equal(x_est1, x_est0)) 840s > stopifnot(all.equal(x_est2, x_est0)) 840s > x_est0 <- rowMeans(x, na.rm = TRUE) 840s > x_est1 <- rowWeightedMeans(x, na.rm = TRUE, useNames = TRUE) 840s > x_est2 <- colWeightedMeans(t(x), na.rm = TRUE, useNames = TRUE) 840s > stopifnot(all.equal(x_est1, x_est0)) 840s > stopifnot(all.equal(x_est2, x_est0)) 840s > dimnames(x) <- NULL 840s > 840s > 840s > # Weighted row averages with missing values 840s > x_est0 <- apply(x, MARGIN = 1L, FUN = weighted.mean, w = w, na.rm = TRUE) 840s > print(x_est0) 840s [1] 0.46614441 0.02377645 0.25526439 -0.22049176 0.54102261 840s > x_est1 <- rowWeightedMeans(x, w = w, na.rm = TRUE) 840s > print(x_est1) 840s [1] 0.46614441 0.02377645 0.25526439 -0.22049176 0.54102261 840s > stopifnot(all.equal(x_est1, x_est0)) 840s > x_est2 <- colWeightedMeans(t(x), w = w, na.rm = TRUE) 840s > stopifnot(all.equal(x_est2, x_est0)) 840s > # Test with and without dimnames on x 840s > for (setDimnames in c(TRUE, FALSE)) { 840s + if (setDimnames) dimnames(x) <- dimnames 840s + else dimnames(x) <- NULL 840s + # Check names attribute 840s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 840s + x_est0 <- rowWeightedMeans_R(x, w = w, na.rm = TRUE, useNames = useNames) 840s + x_est1 <- rowWeightedMeans(x, w = w, na.rm = TRUE, useNames = useNames) 840s + stopifnot(all.equal(x_est1, x_est0)) 840s + x_est0 <- colWeightedMeans_R(t(x), w = w, na.rm = TRUE, useNames = useNames) 840s + x_est1 <- colWeightedMeans(t(x), w = w, na.rm = TRUE, useNames = useNames) 840s + stopifnot(all.equal(x_est1, x_est0)) 840s + } 840s + } 840s > 840s > 840s > # Weighted averages by rows and columns 840s > w <- 1:4 840s > x_est1 <- rowWeightedMeans(x, w = w, na.rm = TRUE) 840s > x_est2 <- colWeightedMeans(t(x), w = w, na.rm = TRUE) 840s > stopifnot(all.equal(x_est2, x_est1)) 840s > # Test with and without dimnames on x 840s > for (setDimnames in c(TRUE, FALSE)) { 840s + if (setDimnames) dimnames(x) <- dimnames 840s + else dimnames(x) <- NULL 840s + # Check names attribute 840s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 840s + x_est0 <- rowWeightedMeans_R(x, w = w, na.rm = TRUE, useNames = useNames) 840s + x_est1 <- rowWeightedMeans(x, w = w, na.rm = TRUE, useNames = useNames) 840s + stopifnot(all.equal(x_est1, x_est0)) 840s + x_est0 <- colWeightedMeans_R(t(x), w = w, na.rm = TRUE, useNames = useNames) 840s + x_est1 <- colWeightedMeans(t(x), w = w, na.rm = TRUE, useNames = useNames) 840s + stopifnot(all.equal(x_est1, x_est0)) 840s + } 840s + } 840s > 840s > 840s > # w contains missing value 840s > w[1] <- NA_integer_ 840s > x_est1 <- rowWeightedMeans(x, w = w, na.rm = TRUE) 840s > x_est2 <- colWeightedMeans(t(x), w = w, na.rm = TRUE) 840s > stopifnot(all.equal(x_est2, x_est1)) 840s > # Test with and without dimnames on x 840s > for (setDimnames in c(TRUE, FALSE)) { 840s + if (setDimnames) dimnames(x) <- dimnames 840s + else dimnames(x) <- NULL 840s + # Check names attribute 840s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 840s + x_est0 <- rowWeightedMeans_R(x, w = w, na.rm = TRUE, useNames = useNames) 840s + x_est1 <- rowWeightedMeans(x, w = w, na.rm = TRUE, useNames = useNames) 840s + stopifnot(all.equal(x_est1, x_est0)) 840s + x_est0 <- colWeightedMeans_R(t(x), w = w, na.rm = TRUE, useNames = useNames) 840s + x_est1 <- colWeightedMeans(t(x), w = w, na.rm = TRUE, useNames = useNames) 840s + stopifnot(all.equal(x_est1, x_est0)) 840s + } 840s + } 840s > 840s > x_est1 <- rowWeightedMeans(x, w = w, na.rm = FALSE) 840s > x_est2 <- colWeightedMeans(t(x), w = w, na.rm = FALSE) 840s > stopifnot(all.equal(x_est2, x_est1)) 840s > # Test with and without dimnames on x 840s > for (setDimnames in c(TRUE, FALSE)) { 840s + if (setDimnames) dimnames(x) <- dimnames 840s + else dimnames(x) <- NULL 840s + # Check names attribute 840s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 840s + x_est0 <- rowWeightedMeans_R(x, w = w, na.rm = FALSE, useNames = useNames) 840s + x_est1 <- rowWeightedMeans(x, w = w, na.rm = FALSE, useNames = useNames) 840s + stopifnot(all.equal(x_est1, x_est0)) 840s + x_est0 <- colWeightedMeans_R(t(x), w = w, na.rm = FALSE, useNames = useNames) 840s + x_est1 <- colWeightedMeans(t(x), w = w, na.rm = FALSE, useNames = useNames) 840s + stopifnot(all.equal(x_est1, x_est0)) 840s + } 840s + } 840s > 840s 840s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 840s Copyright (C) 2024 The R Foundation for Statistical Computing 840s Platform: arm-unknown-linux-gnueabihf (32-bit) 840s 840s R is free software and comes with ABSOLUTELY NO WARRANTY. 840s You are welcome to redistribute it under certain conditions. 840s Type 'license()' or 'licence()' for distribution details. 840s 840s R is a collaborative project with many contributors. 840s Type 'contributors()' for more information and 840s 'citation()' on how to cite R or R packages in publications. 840s 840s Type 'demo()' for some demos, 'help()' for on-line help, or 840s 'help.start()' for an HTML browser interface to help. 840s Type 'q()' to quit R. 840s 841s > library("matrixStats") 841s > 841s > ## Create isFALSE() if running on an old version of R 841s > if (!exists("isFALSE", mode="function")) { 841s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 841s + } 841s > 841s > rowWeightedMeans_R <- function(x, w, na.rm = FALSE, ..., useNames = NA) { 841s + res <- apply(x, MARGIN = 1L, FUN = weighted.mean, w = w, na.rm = na.rm, ...) 841s + 841s + # Keep naming support consistency same as rowWeightedMeans() 841s + idxs <- which(is.na(w) | w != 0) 841s + nw <- length(idxs) 841s + if (na.rm) na.rm <- anyMissing(x) 841s + if ((!is.null(w) && nw == 0L) || isFALSE(na.rm)) { 841s + if (is.na(useNames) || !useNames) names(res) <- NULL 841s + } 841s + else if (isFALSE(useNames)) names(res) <- NULL 841s + 841s + res 841s + } 841s > 841s > colWeightedMeans_R <- function(x, w, na.rm = FALSE, ..., useNames = NA) { 841s + res <- apply(x, MARGIN = 1L, FUN = weighted.mean, w = w, na.rm = na.rm, ...) 841s + 841s + # Keep naming support consistency same as colWeightedMeans() 841s + idxs <- which(is.na(w) | w != 0) 841s + nw <- length(idxs) 841s + if (!is.null(w) && nw == 0L) { 841s + if (is.na(useNames) || !useNames) names(res) <- NULL 841s + } 841s + else if (isFALSE(useNames)) names(res) <- NULL 841s + 841s + res 841s + } 841s > 841s > 841s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 841s > # Subsetted tests 841s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 841s > source("utils/validateIndicesFramework.R") 841s > # To check names attribute 841s > dimnames <- list(letters[1:6], LETTERS[1:6]) 841s > for (mode in c("numeric", "integer", "logical")) { 841s + x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 841s + w <- runif(6, min = 0, max = 6) 841s + storage.mode(x) <- mode 841s + storage.mode(w) <- if (mode == "logical") "integer" else mode 841s + if (mode == "numeric") w[1] <- Inf 841s + 841s + # Test with and without dimnames on x 841s + for (setDimnames in c(TRUE, FALSE)) { 841s + if (setDimnames) dimnames(x) <- dimnames 841s + else dimnames(x) <- NULL 841s + 841s + count <- 0L 841s + for (rows in index_cases) { 841s + for (cols in index_cases) { 841s + count <- count + 1L 841s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 841s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 841s + useNames <- useNames[count %% length(useNames) + 1] 841s + 841s + validateIndicesTestMatrix_w(x, w, rows, cols, 841s + ftest = rowWeightedMeans, fsure = rowWeightedMeans_R, 841s + na.rm = na.rm, useNames = useNames) 841s + validateIndicesTestMatrix_w(x, w, rows, cols, 841s + fcoltest = colWeightedMeans, fsure = colWeightedMeans_R, 841s + na.rm = na.rm, useNames = useNames) 841s + } 841s + } 841s + } 841s + } 844s > 844s 844s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 844s Copyright (C) 2024 The R Foundation for Statistical Computing 844s Platform: arm-unknown-linux-gnueabihf (32-bit) 844s 844s R is free software and comes with ABSOLUTELY NO WARRANTY. 844s You are welcome to redistribute it under certain conditions. 844s Type 'license()' or 'licence()' for distribution details. 844s 844s R is a collaborative project with many contributors. 844s Type 'contributors()' for more information and 844s 'citation()' on how to cite R or R packages in publications. 844s 844s Type 'demo()' for some demos, 'help()' for on-line help, or 844s 'help.start()' for an HTML browser interface to help. 844s Type 'q()' to quit R. 844s 844s > library("matrixStats") 844s > 844s > ## Create isFALSE() if running on an old version of R 844s > if (!exists("isFALSE", mode="function")) { 844s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 844s + } 844s > 844s > rowWeightedMedians_R <- function(x, w, na.rm = FALSE, ..., useNames = NA) { 844s + res <- apply(x, MARGIN = 1L, FUN = weightedMedian, w = w, na.rm = na.rm, ...) 844s + 844s + # Keep naming support consistency same as rowWeightedMedians() 844s + if (!is.null(w)) { 844s + if (isFALSE(useNames)) names(res) <- NULL 844s + } 844s + else if (is.na(useNames) || !useNames) names(res) <- NULL 844s + 844s + res 844s + } 844s > 844s > colWeightedMedians_R <- function(x, w, na.rm = FALSE, ..., useNames = NA) { 844s + res <- apply(x, MARGIN = 2L, FUN = weightedMedian, w = w, na.rm = na.rm, ...) 844s + 844s + # Keep naming support consistency same as colWeightedMedians() 844s + if (!is.null(w)) { 844s + if (isFALSE(useNames)) names(res) <- NULL 844s + } 844s + else if (is.na(useNames) || !useNames) names(res) <- NULL 844s + 844s + res 844s + } 844s > 844s > set.seed(1) 844s > 844s > x <- matrix(rnorm(20), nrow = 5, ncol = 4) 844s > print(x) 844s [,1] [,2] [,3] [,4] 844s [1,] -0.6264538 -0.8204684 1.5117812 -0.04493361 844s [2,] 0.1836433 0.4874291 0.3898432 -0.01619026 844s [3,] -0.8356286 0.7383247 -0.6212406 0.94383621 844s [4,] 1.5952808 0.5757814 -2.2146999 0.82122120 844s [5,] 0.3295078 -0.3053884 1.1249309 0.59390132 844s > 844s > # To check names attribute 844s > dimnames <- list(letters[1:5], LETTERS[1:4]) 844s > 844s > # Non-weighted row medians 844s > x_est0 <- rowMedians(x) 844s > x_est1 <- rowWeightedMedians(x) 844s > stopifnot(all.equal(x_est1, x_est0)) 844s > x_est2 <- colWeightedMedians(t(x)) 844s > stopifnot(all.equal(x_est2, x_est0)) 844s > # Test with and without dimnames on x 844s > for (setDimnames in c(TRUE, FALSE)) { 844s + if (setDimnames) dimnames(x) <- dimnames 844s + else dimnames(x) <- NULL 844s + # Check names attribute 844s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 844s + x_est0 <- rowMedians(x, useNames = useNames) 844s + x_est1 <- rowWeightedMedians(x, useNames = useNames) 844s + x_est2 <- colWeightedMedians(t(x), useNames = useNames) 844s + stopifnot(all.equal(x_est1, x_est0)) 844s + stopifnot(all.equal(x_est2, x_est0)) 844s + } 844s + } 844s > 844s > 844s > # Weighted row medians (uniform weights) 844s > w <- rep(2.5, times = ncol(x)) 844s > x_est0 <- rowMedians(x) 844s > x_est1 <- rowWeightedMedians(x, w = w) 844s > stopifnot(all.equal(x_est1, x_est0)) 844s > x_est2 <- colWeightedMedians(t(x), w = w) 844s > stopifnot(all.equal(x_est2, x_est0)) 844s > # Test with and without dimnames on x 844s > for (setDimnames in c(TRUE, FALSE)) { 844s + if (setDimnames) dimnames(x) <- dimnames 844s + else dimnames(x) <- NULL 844s + # Check names attribute 844s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 844s + x_est0 <- rowWeightedMedians_R(x, w = w, useNames = useNames) 844s + x_est1 <- rowWeightedMedians(x, w = w, useNames = useNames) 844s + stopifnot(all.equal(x_est1, x_est0)) 844s + x_est0 <- colWeightedMedians_R(t(x), w = w, useNames = useNames) 844s + x_est1 <- colWeightedMedians(t(x), w = w, useNames = useNames) 844s + stopifnot(all.equal(x_est1, x_est0)) 844s + } 844s + } 844s > 844s > 844s > # Weighted row medians (excluding some columns) 844s > w <- c(1, 1, 0, 1) 844s > x_est0 <- rowMedians(x[, (w == 1), drop = FALSE]) 844s > x_est1 <- rowWeightedMedians(x, w = w) 844s > stopifnot(all.equal(x_est1, x_est0)) 844s > x_est2 <- colWeightedMedians(t(x), w = w) 844s > stopifnot(all.equal(x_est2, x_est0)) 844s > # Test with and without dimnames on x 844s > for (setDimnames in c(TRUE, FALSE)) { 844s + if (setDimnames) dimnames(x) <- dimnames 844s + else dimnames(x) <- NULL 844s + # Check names attribute 844s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 844s + x_est0 <- rowWeightedMedians_R(x, w = w, useNames = useNames) 844s + x_est1 <- rowWeightedMedians(x, w = w, useNames = useNames) 844s + stopifnot(all.equal(x_est1, x_est0)) 844s + x_est0 <- colWeightedMedians_R(t(x), w = w, useNames = useNames) 844s + x_est1 <- colWeightedMedians(t(x), w = w, useNames = useNames) 844s + stopifnot(all.equal(x_est1, x_est0)) 844s + } 844s + } 844s > 844s > # Weighted row medians (excluding some columns) 844s > w <- c(0, 1, 0, 0) 844s > x_est0 <- rowMedians(x[, (w == 1), drop = FALSE]) 844s > x_est1 <- rowWeightedMedians(x, w = w) 844s > stopifnot(all.equal(x_est1, x_est0)) 844s > x_est2 <- colWeightedMedians(t(x), w = w) 844s > stopifnot(all.equal(x_est2, x_est0)) 844s > # Test with and without dimnames on x 844s > for (setDimnames in c(TRUE, FALSE)) { 844s + if (setDimnames) dimnames(x) <- dimnames 844s + else dimnames(x) <- NULL 844s + # Check names attribute 844s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 844s + x_est0 <- rowWeightedMedians_R(x, w = w, useNames = useNames) 844s + x_est1 <- rowWeightedMedians(x, w = w, useNames = useNames) 844s + stopifnot(all.equal(x_est1, x_est0)) 844s + x_est0 <- colWeightedMedians_R(t(x), w = w, useNames = useNames) 844s + x_est1 <- colWeightedMedians(t(x), w = w, useNames = useNames) 844s + stopifnot(all.equal(x_est1, x_est0)) 844s + } 844s + } 844s > 844s > # Weighted row medians (all zero weights) 844s > w <- c(0, 0, 0, 0) 844s > x_est0 <- rowMedians(x[, (w == 1), drop = FALSE]) 844s > x_est1 <- rowWeightedMedians(x, w = w) 844s > stopifnot(all.equal(x_est1, x_est0)) 844s > x_est2 <- colWeightedMedians(t(x), w = w) 844s > stopifnot(all.equal(x_est2, x_est0)) 844s > # Test with and without dimnames on x 844s > for (setDimnames in c(TRUE, FALSE)) { 844s + if (setDimnames) dimnames(x) <- dimnames 844s + else dimnames(x) <- NULL 844s + # Check names attribute 844s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 844s + x_est0 <- rowWeightedMedians_R(x, w = w, useNames = useNames) 844s + x_est1 <- rowWeightedMedians(x, w = w, useNames = useNames) 844s + stopifnot(all.equal(x_est1, x_est0)) 844s + x_est0 <- colWeightedMedians_R(t(x), w = w, useNames = useNames) 844s + x_est1 <- colWeightedMedians(t(x), w = w, useNames = useNames) 844s + stopifnot(all.equal(x_est1, x_est0)) 844s + } 844s + } 845s > 845s > # Weighted medians by rows and columns 845s > w <- 1:4 845s > x_est1 <- rowWeightedMedians(x, w = w) 845s > x_est2 <- colWeightedMedians(t(x), w = w) 845s > stopifnot(all.equal(x_est2, x_est1)) 845s > # Test with and without dimnames on x 845s > for (setDimnames in c(TRUE, FALSE)) { 845s + if (setDimnames) dimnames(x) <- dimnames 845s + else dimnames(x) <- NULL 845s + # Check names attribute 845s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 845s + x_est0 <- rowWeightedMedians_R(x, w = w, useNames = useNames) 845s + x_est1 <- rowWeightedMedians(x, w = w, useNames = useNames) 845s + stopifnot(all.equal(x_est1, x_est0)) 845s + x_est0 <- colWeightedMedians_R(t(x), w = w, useNames = useNames) 845s + x_est1 <- colWeightedMedians(t(x), w = w, useNames = useNames) 845s + stopifnot(all.equal(x_est1, x_est0)) 845s + } 845s + } 845s > 845s > 845s > # Weighted row medians with missing values 845s > x_est0 <- apply(x, MARGIN = 1L, FUN = weightedMedian, w = w, na.rm = TRUE) 845s > print(x_est0) 845s [1] -0.04493361 0.23519330 0.73832471 0.65759463 0.59390132 845s > x_est1 <- rowWeightedMedians(x, w = w, na.rm = TRUE) 845s > print(x_est1) 845s [1] -0.04493361 0.23519330 0.73832471 0.65759463 0.59390132 845s > stopifnot(all.equal(x_est1, x_est0)) 845s > x_est2 <- colWeightedMedians(t(x), w = w) 845s > stopifnot(all.equal(x_est2, x_est0)) 845s > # Test with and without dimnames on x 845s > for (setDimnames in c(TRUE, FALSE)) { 845s + if (setDimnames) dimnames(x) <- dimnames 845s + else dimnames(x) <- NULL 845s + # Check names attribute 845s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 845s + x_est0 <- rowWeightedMedians_R(x, w = w, na.rm = TRUE, useNames = useNames) 845s + x_est1 <- rowWeightedMedians(x, w = w, na.rm = TRUE, useNames = useNames) 845s + stopifnot(all.equal(x_est1, x_est0)) 845s + x_est0 <- colWeightedMedians_R(t(x), w = w, na.rm = TRUE, useNames = useNames) 845s + x_est1 <- colWeightedMedians(t(x), w = w, na.rm = TRUE, useNames = useNames) 845s + stopifnot(all.equal(x_est1, x_est0)) 845s + } 845s + } 845s > 845s > # Weighted medians by rows and columns 845s > w <- 1:4 845s > x_est1 <- rowWeightedMedians(x, w = w, na.rm = TRUE) 845s > x_est2 <- colWeightedMedians(t(x), w = w, na.rm = TRUE) 845s > stopifnot(all.equal(x_est2, x_est1)) 845s > # Test with and without dimnames on x 845s > for (setDimnames in c(TRUE, FALSE)) { 845s + if (setDimnames) dimnames(x) <- dimnames 845s + else dimnames(x) <- NULL 845s + # Check names attribute 845s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 845s + x_est0 <- rowWeightedMedians_R(x, w = w, na.rm = TRUE, useNames = useNames) 845s + x_est1 <- rowWeightedMedians(x, w = w, na.rm = TRUE, useNames = useNames) 845s + stopifnot(all.equal(x_est1, x_est0)) 845s + x_est0 <- colWeightedMedians_R(t(x), w = w, na.rm = TRUE, useNames = useNames) 845s + x_est1 <- colWeightedMedians(t(x), w = w, na.rm = TRUE, useNames = useNames) 845s + stopifnot(all.equal(x_est1, x_est0)) 845s + } 845s + } 845s > 845s > 845s > # Inf weight 845s > x <- matrix(1:2, nrow = 1, ncol = 2) 845s > w <- c(7, Inf) 845s > x_est1 <- rowWeightedMedians(x, w = w) 845s > x_est2 <- colWeightedMedians(t(x), w = w) 845s > stopifnot(identical(2, x_est1)) 845s > stopifnot(identical(2, x_est2)) 845s > # Test with and without dimnames on x 845s > dimnames <- list("a", LETTERS[1:2]) 845s > for (setDimnames in c(TRUE, FALSE)) { 845s + if (setDimnames) dimnames(x) <- dimnames 845s + else dimnames(x) <- NULL 845s + # Check names attribute 845s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 845s + x_est0 <- rowWeightedMedians_R(x, w = w, useNames = useNames) 845s + x_est1 <- rowWeightedMedians(x, w = w, useNames = useNames) 845s + stopifnot(all.equal(x_est1, x_est0)) 845s + x_est0 <- colWeightedMedians_R(t(x), w = w, useNames = useNames) 845s + x_est1 <- colWeightedMedians(t(x), w = w, useNames = useNames) 845s + stopifnot(all.equal(x_est1, x_est0)) 845s + } 845s + } 845s > 845s 845s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 845s Copyright (C) 2024 The R Foundation for Statistical Computing 845s Platform: arm-unknown-linux-gnueabihf (32-bit) 845s 845s R is free software and comes with ABSOLUTELY NO WARRANTY. 845s You are welcome to redistribute it under certain conditions. 845s Type 'license()' or 'licence()' for distribution details. 845s 845s R is a collaborative project with many contributors. 845s Type 'contributors()' for more information and 845s 'citation()' on how to cite R or R packages in publications. 845s 845s Type 'demo()' for some demos, 'help()' for on-line help, or 845s 'help.start()' for an HTML browser interface to help. 845s Type 'q()' to quit R. 845s 845s > library("matrixStats") 845s > 845s > ## Create isFALSE() if running on an old version of R 845s > if (!exists("isFALSE", mode="function")) { 845s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 845s + } 845s > 845s > rowWeightedMedians_R <- function(x, w, na.rm = FALSE, ..., useNames = NA) { 845s + res <- apply(x, MARGIN = 1L, FUN = weightedMedian, w = w, na.rm = na.rm, ...) 845s + 845s + # Keep naming support consistency same as rowWeightedMedians() 845s + if (!is.null(w)) { 845s + if (isFALSE(useNames)) names(res) <- NULL 845s + } 845s + else if (is.na(useNames) || !useNames) names(res) <- NULL 845s + 845s + res 845s + } 845s > 845s > 845s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 845s > # Subsetted tests 845s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 845s > source("utils/validateIndicesFramework.R") 845s > # To check names attribute 845s > dimnames <- list(letters[1:6], LETTERS[1:6]) 845s > for (mode in c("numeric", "integer", "logical")) { 845s + x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 845s + w <- runif(6, min = 0, max = 6) 845s + storage.mode(x) <- mode 845s + storage.mode(w) <- if (mode == "logical") "integer" else mode 845s + if (mode == "numeric") w[1] <- Inf 845s + 845s + # Test with and without dimnames on x 845s + for (setDimnames in c(TRUE, FALSE)) { 845s + if (setDimnames) dimnames(x) <- dimnames 845s + else dimnames(x) <- NULL 845s + 845s + count <- 0L 845s + for (rows in index_cases) { 845s + for (cols in index_cases) { 845s + count <- count + 1L 845s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 845s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 845s + useNames <- useNames[count %% length(useNames) + 1] 845s + 845s + validateIndicesTestMatrix_w(x, w, rows, cols, 845s + ftest = rowWeightedMedians, 845s + fsure = rowWeightedMedians_R, 845s + na.rm = na.rm, useNames = useNames) 845s + validateIndicesTestMatrix_w(x, w, rows, cols, 845s + fcoltest = colWeightedMedians, 845s + fsure = rowWeightedMedians_R, 845s + na.rm = na.rm, useNames = useNames) 845s + } 845s + } 845s + } 845s + } 856s > Doubles: 856s Integers: 857s Warning in sum2(x[1:2]) : 857s Integer overflow. Use sum2(..., mode = "double") to avoid this. 857s Warning in sum2(x, mode = "integer") : 857s sum2(x, mode = "integer") called with typeof(x) == "double"; did you mean to use as.integer(sum2(x))? 866s 866s 866s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 866s Copyright (C) 2024 The R Foundation for Statistical Computing 866s Platform: arm-unknown-linux-gnueabihf (32-bit) 866s 866s R is free software and comes with ABSOLUTELY NO WARRANTY. 866s You are welcome to redistribute it under certain conditions. 866s Type 'license()' or 'licence()' for distribution details. 866s 866s R is a collaborative project with many contributors. 866s Type 'contributors()' for more information and 866s 'citation()' on how to cite R or R packages in publications. 866s 866s Type 'demo()' for some demos, 'help()' for on-line help, or 866s 'help.start()' for an HTML browser interface to help. 866s Type 'q()' to quit R. 866s 866s > library("matrixStats") 866s > 866s > set.seed(1) 866s > 866s > x <- matrix(rnorm(20), nrow = 5L, ncol = 4L) 866s > print(x) 866s [,1] [,2] [,3] [,4] 866s [1,] -0.6264538 -0.8204684 1.5117812 -0.04493361 866s [2,] 0.1836433 0.4874291 0.3898432 -0.01619026 866s [3,] -0.8356286 0.7383247 -0.6212406 0.94383621 866s [4,] 1.5952808 0.5757814 -2.2146999 0.82122120 866s [5,] 0.3295078 -0.3053884 1.1249309 0.59390132 866s > 866s > # To check names attribute 866s > dimnames <- list(letters[1:5], LETTERS[1:4]) 866s > 866s > # Weighted row variances (uniform weights - all w = 1) 866s > # Non-weighted row variances 866s > x_est0 <- rowVars(x) 866s > w <- rep(1, times = ncol(x)) 866s > x_est1 <- rowWeightedVars(x, w = w) 866s > print(x_est1) 866s [1] 1.11767161 0.05022969 0.83582537 2.76819528 0.35351857 866s > stopifnot(all.equal(x_est1, x_est0)) 866s > x_est2 <- colWeightedVars(t(x), w = w) 866s > stopifnot(all.equal(x_est2, x_est0)) 866s > # Check names attribute 866s > dimnames(x) <- dimnames 866s > x_est1 <- rowWeightedVars(x, w = w, useNames = FALSE) 866s > x_est2 <- colWeightedVars(t(x), w = w, useNames = FALSE) 866s > stopifnot(all.equal(x_est1, x_est0)) 866s > stopifnot(all.equal(x_est2, x_est0)) 866s > x_est0 <- rowVars(x, useNames = TRUE) 866s > if (!matrixStats:::isUseNamesNADefunct()) { 866s + x_est1 <- rowWeightedVars(x, w = w, useNames = NA) 866s + x_est2 <- colWeightedVars(t(x), w = w, useNames = NA) 866s + stopifnot(all.equal(x_est1, x_est0)) 866s + stopifnot(all.equal(x_est2, x_est0)) 866s + } 866s > x_est1 <- rowWeightedVars(x, w = w, useNames = TRUE) 866s > x_est2 <- colWeightedVars(t(x), w = w, useNames = TRUE) 866s > stopifnot(all.equal(x_est1, x_est0)) 866s > stopifnot(all.equal(x_est2, x_est0)) 866s > dimnames(x) <- NULL 866s > 866s > 866s > # Weighted row variances (uniform weights - all w = 3) 866s > x3 <- cbind(x, x, x) 866s > x_est0 <- rowVars(x3) 866s > w <- rep(3, times = ncol(x)) 866s > x_est1 <- rowWeightedVars(x, w = w) 866s > print(x_est1) 866s [1] 0.91445859 0.04109702 0.68385712 2.26488705 0.28924246 866s > stopifnot(all.equal(x_est1, x_est0)) 866s > x_est2 <- colWeightedVars(t(x), w = w) 866s > stopifnot(all.equal(x_est2, x_est0)) 866s > # Check names attribute 866s > dimnames(x) <- dimnames 866s > x_est1 <- rowWeightedVars(x, w = w, useNames = FALSE) 866s > x_est2 <- colWeightedVars(t(x), w = w, useNames = FALSE) 866s > stopifnot(all.equal(x_est1, x_est0)) 866s > stopifnot(all.equal(x_est2, x_est0)) 866s > x3 <- cbind(x, x, x) 866s > x_est0 <- rowVars(x3, useNames = TRUE) 866s > if (!matrixStats:::isUseNamesNADefunct()) { 866s + x_est1 <- rowWeightedVars(x, w = w, useNames = NA) 866s + x_est2 <- colWeightedVars(t(x), w = w, useNames = NA) 866s + stopifnot(all.equal(x_est1, x_est0)) 866s + stopifnot(all.equal(x_est2, x_est0)) 866s + } 866s > x_est1 <- rowWeightedVars(x, w = w, useNames = TRUE) 866s > x_est2 <- colWeightedVars(t(x), w = w, useNames = TRUE) 866s > stopifnot(all.equal(x_est1, x_est0)) 866s > stopifnot(all.equal(x_est2, x_est0)) 866s > dimnames(x) <- NULL 866s > 866s > 866s > # Weighted row variances (excluding some columns) 866s > w <- c(1, 1, 0, 1) 866s > x_est0 <- rowVars(x[, (w == 1), drop = FALSE]) 866s > x_est1 <- rowWeightedVars(x, w = w) 866s > print(x_est1) 866s [1] 0.16287693 0.06430861 0.94767651 0.28313135 0.21361984 866s > stopifnot(all.equal(x_est1, x_est0)) 866s > x_est2 <- colWeightedVars(t(x), w = w) 866s > stopifnot(all.equal(x_est2, x_est0)) 866s > # Check names attribute 866s > dimnames(x) <- dimnames 866s > x_est1 <- rowWeightedVars(x, w = w, useNames = FALSE) 866s > x_est2 <- colWeightedVars(t(x), w = w, useNames = FALSE) 866s > stopifnot(all.equal(x_est1, x_est0)) 866s > stopifnot(all.equal(x_est2, x_est0)) 866s > x_est0 <- rowVars(x[, (w == 1), drop = FALSE], useNames = TRUE) 866s > if (!matrixStats:::isUseNamesNADefunct()) { 866s + x_est1 <- rowWeightedVars(x, w = w, useNames = NA) 866s + x_est2 <- colWeightedVars(t(x), w = w, useNames = NA) 866s + stopifnot(all.equal(x_est1, x_est0)) 866s + stopifnot(all.equal(x_est2, x_est0)) 866s + } 866s > x_est1 <- rowWeightedVars(x, w = w, useNames = TRUE) 866s > x_est2 <- colWeightedVars(t(x), w = w, useNames = TRUE) 866s > stopifnot(all.equal(x_est1, x_est0)) 866s > stopifnot(all.equal(x_est2, x_est0)) 866s > dimnames(x) <- NULL 866s > 866s > 866s > # Weighted row variances (excluding some columns) 866s > w <- c(0, 1, 0, 0) 866s > x_est0 <- rowVars(x[, (w == 1), drop = FALSE]) 866s > x_est1 <- rowWeightedVars(x, w = w) 866s > #stopifnot(all.equal(x_est1, x_est0)) 866s > x_est2 <- colWeightedVars(t(x), w = w) 866s > stopifnot(all.equal(x_est2, x_est1)) 866s > # Check names attribute 866s > dimnames(x) <- dimnames 866s > x_est1 <- rowWeightedVars(x, w = w, useNames = FALSE) 866s > x_est2 <- colWeightedVars(t(x), w = w, useNames = FALSE) 866s > stopifnot(all.equal(x_est1, x_est0)) 866s > stopifnot(all.equal(x_est2, x_est0)) 866s > x_est0 <- rowVars(x[, (w == 1), drop = FALSE], useNames = TRUE) 866s > if (!matrixStats:::isUseNamesNADefunct()) { 866s + x_est1 <- rowWeightedVars(x, w = w, useNames = NA) 866s + x_est2 <- colWeightedVars(t(x), w = w, useNames = NA) 866s + stopifnot(all.equal(x_est1, x_est0)) 866s + stopifnot(all.equal(x_est2, x_est0)) 866s + } 866s > x_est1 <- rowWeightedVars(x, w = w, useNames = TRUE) 866s > x_est2 <- colWeightedVars(t(x), w = w, useNames = TRUE) 866s > stopifnot(all.equal(x_est1, x_est0)) 866s > stopifnot(all.equal(x_est2, x_est0)) 866s > dimnames(x) <- NULL 866s > 866s > 866s > # Weighted row variances (all zero weights) 866s > w <- c(0, 0, 0, 0) 866s > x_est0 <- rowVars(x[, (w == 1), drop = FALSE]) 866s > x_est1 <- rowWeightedVars(x, w = w) 866s > stopifnot(all.equal(x_est1, x_est0)) 866s > x_est2 <- colWeightedVars(t(x), w = w) 866s > stopifnot(all.equal(x_est2, x_est0)) 866s > # Check names attribute 866s > dimnames(x) <- dimnames 866s > x_est1 <- rowWeightedVars(x, w = w, useNames = FALSE) 866s > x_est2 <- colWeightedVars(t(x), w = w, useNames = FALSE) 866s > stopifnot(all.equal(x_est1, x_est0)) 866s > stopifnot(all.equal(x_est2, x_est0)) 866s > x_est0 <- rowVars(x[, (w == 1), drop = FALSE], useNames = TRUE) 866s > if (!matrixStats:::isUseNamesNADefunct()) { 866s + x_est1 <- rowWeightedVars(x, w = w, useNames = NA) 866s + x_est2 <- colWeightedVars(t(x), w = w, useNames = NA) 866s + stopifnot(all.equal(x_est1, x_est0)) 866s + stopifnot(all.equal(x_est2, x_est0)) 866s + } 866s > x_est1 <- rowWeightedVars(x, w = w, useNames = TRUE) 866s > x_est2 <- colWeightedVars(t(x), w = w, useNames = TRUE) 866s > stopifnot(all.equal(x_est1, x_est0)) 866s > stopifnot(all.equal(x_est2, x_est0)) 866s > dimnames(x) <- NULL 866s > 866s > # Weighted variances by rows and columns 866s > w <- 1:4 866s > # Test with and without dimnames on x 866s > for (setDimnames in c(TRUE, FALSE)) { 866s + if (setDimnames) dimnames(x) <- dimnames 866s + else dimnames(x) <- NULL 866s + # Check names attribute 866s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 866s + x_est1 <- rowWeightedVars(x, w = w, useNames = useNames) 866s + print(x_est1) 866s + x_est2 <- colWeightedVars(t(x), w = w, useNames = useNames) 866s + stopifnot(all.equal(x_est2, x_est1)) 866s + } 866s + } 866s a b c d e 866s 0.90747094 0.05040463 0.65089440 2.28697479 0.27902734 866s [1] 0.90747094 0.05040463 0.65089440 2.28697479 0.27902734 866s [1] 0.90747094 0.05040463 0.65089440 2.28697479 0.27902734 866s [1] 0.90747094 0.05040463 0.65089440 2.28697479 0.27902734 866s > 866s > 866s > x[sample(length(x), size = 0.3 * length(x))] <- NA 866s > print(x) 866s [,1] [,2] [,3] [,4] 866s [1,] -0.6264538 NA 1.5117812 -0.04493361 866s [2,] 0.1836433 NA NA -0.01619026 866s [3,] -0.8356286 0.7383247 -0.6212406 0.94383621 866s [4,] 1.5952808 NA -2.2146999 0.82122120 866s [5,] 0.3295078 NA NA 0.59390132 866s > 866s > # Non-weighted row variances with missing values 866s > x_est0 <- rowVars(x, na.rm = TRUE) 866s > x_est1 <- rowWeightedVars(x, w = rep(1, times = ncol(x)), na.rm = TRUE) 866s > print(x_est1) 866s [1] 1.22226258 0.01996673 0.83582537 4.05532299 0.03495197 866s > stopifnot(all.equal(x_est1, x_est0)) 866s > x_est2 <- colWeightedVars(t(x), w = rep(1, times = ncol(x)), na.rm = TRUE) 866s > stopifnot(all.equal(x_est2, x_est0)) 866s > # Check names attribute 866s > dimnames(x) <- dimnames 866s > x_est1 <- rowWeightedVars(x, w = rep(1, times = ncol(x)), na.rm = TRUE, useNames = FALSE) 866s > x_est2 <- colWeightedVars(t(x), w = rep(1, times = ncol(x)), na.rm = TRUE, useNames = FALSE) 866s > stopifnot(all.equal(x_est1, x_est0)) 866s > stopifnot(all.equal(x_est2, x_est0)) 866s > x_est0 <- rowVars(x, na.rm = TRUE, useNames = TRUE) 866s > x_est1 <- rowWeightedVars(x, w = rep(1, times = ncol(x)), na.rm = TRUE, useNames = TRUE) 866s > x_est2 <- colWeightedVars(t(x), w = rep(1, times = ncol(x)), na.rm = TRUE, useNames = TRUE) 866s > stopifnot(all.equal(x_est1, x_est0)) 866s > stopifnot(all.equal(x_est2, x_est0)) 866s > dimnames(x) <- NULL 866s > 866s > 866s > # Weighted row variances with missing values 866s > # Test with and without dimnames on x 866s > for (setDimnames in c(TRUE, FALSE)) { 866s + if (setDimnames) dimnames(x) <- dimnames 866s + else dimnames(x) <- NULL 866s + # Check names attribute 866s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 866s + x_est1 <- rowWeightedVars(x, w = w, na.rm = TRUE, useNames = useNames) 866s + print(x_est1) 866s + x_est2 <- colWeightedVars(t(x), w = w, na.rm = TRUE, useNames = useNames) 866s + stopifnot(all.equal(x_est2, x_est1)) 866s + } 866s + } 866s a b c d e 866s 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 866s [1] 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 866s [1] 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 866s [1] 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 866s > 866s > 866s > # Weighted variances by rows and columns 866s > w <- 1:4 866s > # Test with and without dimnames on x 866s > for (setDimnames in c(TRUE, FALSE)) { 866s + if (setDimnames) dimnames(x) <- dimnames 866s + else dimnames(x) <- NULL 866s + # Check names attribute 866s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 866s + x_est1 <- rowWeightedVars(x, w = w, na.rm = TRUE, useNames = useNames) 866s + print(x_est1) 866s + x_est2 <- colWeightedVars(t(x), w = w, na.rm = TRUE, useNames = useNames) 866s + stopifnot(all.equal(x_est2, x_est1)) 866s + } 866s + } 866s a b c d e 866s 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 866s [1] 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 866s [1] 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 866s [1] 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 866s > 866s > 866s > # Weighted row standard deviation (excluding some columns) 866s > w <- c(1, 1, 0, 1) 866s > ## FIXME: rowVars()/rowSds() needs na.rm = FALSE (wrong default) 866s > x_est0 <- rowSds(x[, (w == 1), drop = FALSE], na.rm = FALSE) 866s > x_est1 <- rowWeightedSds(x, w = w) 866s > print(x_est1) 866s [1] NA NA 0.9734868 NA NA 866s > stopifnot(all.equal(x_est1, x_est0)) 866s > x_est2 <- colWeightedSds(t(x), w = w, na.rm = FALSE) 866s > stopifnot(all.equal(x_est2, x_est0)) 866s > # Check names attribute 866s > dimnames(x) <- dimnames 866s > x_est1 <- rowWeightedSds(x, w = w, na.rm = FALSE, useNames = FALSE) 866s > x_est2 <- colWeightedSds(t(x), w = w, na.rm = FALSE, useNames = FALSE) 866s > stopifnot(all.equal(x_est1, x_est0)) 866s > stopifnot(all.equal(x_est2, x_est0)) 866s > x_est0 <- rowSds(x[, (w == 1), drop = FALSE], na.rm = FALSE, useNames = TRUE) 866s > if (!matrixStats:::isUseNamesNADefunct()) { 866s + x_est1 <- rowWeightedSds(x, w = w, na.rm = FALSE, useNames = NA) 866s + x_est2 <- colWeightedSds(t(x), w = w, na.rm = FALSE, useNames = NA) 866s + stopifnot(all.equal(x_est1, x_est0)) 866s + stopifnot(all.equal(x_est2, x_est0)) 866s + } 866s > x_est1 <- rowWeightedSds(x, w = w, na.rm = FALSE, useNames = TRUE) 866s > x_est2 <- colWeightedSds(t(x), w = w, na.rm = FALSE, useNames = TRUE) 866s > stopifnot(all.equal(x_est1, x_est0)) 866s > stopifnot(all.equal(x_est2, x_est0)) 866s > dimnames(x) <- NULL 866s > 866s > 866s > # Weighted row MADs (excluding some columns) 866s > w <- c(1, 1, 0, 1) 866s > x_est0 <- rowMads(x[, (w == 1), drop = FALSE]) 866s > x_est1 <- rowWeightedMads(x, w = w) 866s > print(x_est1) 866s [1] NA NA 0.3046914 NA NA 866s > stopifnot(all.equal(x_est1, x_est0)) 866s > x_est2 <- colWeightedMads(t(x), w = w) 866s > stopifnot(all.equal(x_est2, x_est0)) 866s > # Check names attribute 866s > dimnames(x) <- dimnames 866s > x_est1 <- rowWeightedMads(x, w = w, useNames = FALSE) 866s > x_est2 <- colWeightedMads(t(x), w = w, useNames = FALSE) 866s > stopifnot(all.equal(x_est1, x_est0)) 866s > stopifnot(all.equal(x_est2, x_est0)) 866s > x_est0 <- rowMads(x[, (w == 1), drop = FALSE], useNames = TRUE) 866s > if (!matrixStats:::isUseNamesNADefunct()) { 866s + x_est1 <- rowWeightedMads(x, w = w, useNames = NA) 866s + x_est2 <- colWeightedMads(t(x), w = w, useNames = NA) 866s + stopifnot(all.equal(x_est1, x_est0)) 866s + stopifnot(all.equal(x_est2, x_est0)) 866s + } 866s > x_est1 <- rowWeightedMads(x, w = w, useNames = TRUE) 866s > x_est2 <- colWeightedMads(t(x), w = w, useNames = TRUE) 866s > stopifnot(all.equal(x_est1, x_est0)) 866s > stopifnot(all.equal(x_est2, x_est0)) 866s > dimnames(x) <- NULL 866s > 866s 866s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 866s Copyright (C) 2024 The R Foundation for Statistical Computing 866s Platform: arm-unknown-linux-gnueabihf (32-bit) 866s 866s R is free software and comes with ABSOLUTELY NO WARRANTY. 866s You are welcome to redistribute it under certain conditions. 866s Type 'license()' or 'licence()' for distribution details. 866s 866s R is a collaborative project with many contributors. 866s Type 'contributors()' for more information and 866s 'citation()' on how to cite R or R packages in publications. 866s 866s Type 'demo()' for some demos, 'help()' for on-line help, or 866s 'help.start()' for an HTML browser interface to help. 866s Type 'q()' to quit R. 866s 866s > library("matrixStats") 866s > 866s > fcns <- list( 866s + weightedVar = c(rowWeightedVars, colWeightedVars), 866s + weightedSd = c(rowWeightedSds, colWeightedSds), 866s + weightedMad = c(rowWeightedMads, colWeightedMads) 866s + ) 866s > 866s > 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > # Subsetted tests 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > source("utils/validateIndicesFramework.R") 866s > # To check names attribute 866s > dimnames <- list(letters[1:6], LETTERS[1:6]) 866s > for (fcn in names(fcns)) { 866s + cat(sprintf("subsetted tests on matrix %s()...\n", fcn)) 866s + row_fcn <- fcns[[fcn]][[1]] 866s + col_fcn <- fcns[[fcn]][[2]] 866s + 866s + for (mode in c("numeric", "integer")) { 866s + x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 866s + w <- runif(6, min = 0, max = 6) 866s + storage.mode(x) <- mode 866s + storage.mode(w) <- mode 866s + if (mode == "numeric") w[1] <- Inf 866s + 866s + # Test with and without dimnames on x 866s + for (setDimnames in c(TRUE, FALSE)) { 866s + if (setDimnames) dimnames(x) <- dimnames 866s + else dimnames(x) <- NULL 866s + 866s + count <- 0L 866s + for (rows in index_cases) { 866s + for (cols in index_cases) { 866s + count <- count + 1L 866s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 866s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 866s + useNames <- useNames[count %% length(useNames) + 1] 866s + 866s + validateIndicesTestMatrix_w(x, w, rows, cols, 866s + ftest = row_fcn, fsure = row_fcn, 866s + na.rm = na.rm, useNames = useNames) 866s + validateIndicesTestMatrix_w(x, w, rows, cols, 866s + fcoltest = col_fcn, fsure = row_fcn, 866s + na.rm = na.rm, useNames = useNames) 866s + } 866s + } 866s + } 866s + } 866s + cat(sprintf("%s()...DONE\n", fcn)) 866s + } 866s subsetted tests on matrix weightedVar()... 866s weightedVar()...DONE 866s subsetted tests on matrix weightedSd()... 866s weightedSd()...DONE 866s subsetted tests on matrix weightedMad()... 866s weightedMad()...DONE 866s > 866s 866s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 866s Copyright (C) 2024 The R Foundation for Statistical Computing 866s Platform: arm-unknown-linux-gnueabihf (32-bit) 866s 866s R is free software and comes with ABSOLUTELY NO WARRANTY. 866s You are welcome to redistribute it under certain conditions. 866s Type 'license()' or 'licence()' for distribution details. 866s 866s R is a collaborative project with many contributors. 866s Type 'contributors()' for more information and 866s 'citation()' on how to cite R or R packages in publications. 866s 866s Type 'demo()' for some demos, 'help()' for on-line help, or 866s 'help.start()' for an HTML browser interface to help. 866s Type 'q()' to quit R. 866s 866s > library("matrixStats") 866s > 866s > signTabulate0 <- function(x, ...) { 866s + nneg <- sum(x < 0, na.rm = TRUE) 866s + nzero <- sum(x == 0, na.rm = TRUE) 866s + npos <- sum(x > 0, na.rm = TRUE) 866s + nna <- sum(is.na(x)) 866s + nneginf <- sum(is.infinite(x) & x < 0, na.rm = TRUE) 866s + nposinf <- sum(is.infinite(x) & x > 0, na.rm = TRUE) 866s + res <- c(nneg, nzero, npos, nna, nneginf, nposinf) 866s + res <- as.double(res) 866s + names(res) <- c("-1", "0", "+1", "NA", "-Inf", "+Inf") 866s + if (is.integer(x)) res <- res[1:4] 866s + res 866s + } # signTabulate0() 866s > 866s > 866s > # Simulate data 866s > set.seed(0xBEEF) 866s > n <- 100L 866s > x <- runif(n) 866s > x[sample(n, size = 0.1 * n)] <- 0 866s > x[sample(n, size = 0.1 * n)] <- NA_real_ 866s > x[sample(n, size = 0.1 * n)] <- -Inf 866s > x[sample(n, size = 0.1 * n)] <- +Inf 866s > 866s > # Doubles 866s > message("Doubles:") 866s > counts0 <- signTabulate0(x) 866s > print(counts0) 866s -1 0 +1 NA -Inf +Inf 866s 9 7 77 7 9 10 866s > counts1 <- signTabulate(x) 866s > print(counts1) 866s -1 0 +1 NA -Inf +Inf 866s 9 7 77 7 9 10 866s > stopifnot(identical(counts1, counts0)) 866s > 866s > # Integers 866s > message("Integers:") 866s > x <- suppressWarnings(as.integer(x)) 866s > counts0 <- signTabulate0(x) 866s > print(counts0) 866s -1 0 +1 NA 866s 0 74 0 26 866s > counts1 <- signTabulate(x) 866s > print(counts1) 866s -1 0 +1 NA 866s 0 74 0 26 866s > stopifnot(identical(counts1, counts0)) 866s > 866s 866s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 866s Copyright (C) 2024 The R Foundation for Statistical Computing 866s Platform: arm-unknown-linux-gnueabihf (32-bit) 866s 866s R is free software and comes with ABSOLUTELY NO WARRANTY. 866s You are welcome to redistribute it under certain conditions. 866s Type 'license()' or 'licence()' for distribution details. 866s 866s R is a collaborative project with many contributors. 866s Type 'contributors()' for more information and 866s 'citation()' on how to cite R or R packages in publications. 866s 866s Type 'demo()' for some demos, 'help()' for on-line help, or 866s 'help.start()' for an HTML browser interface to help. 866s Type 'q()' to quit R. 866s 866s > library("matrixStats") 866s > 866s > signTabulate0 <- function(x, ...) { 866s + nneg <- sum(x < 0, na.rm = TRUE) 866s + nzero <- sum(x == 0, na.rm = TRUE) 866s + npos <- sum(x > 0, na.rm = TRUE) 866s + nna <- sum(is.na(x)) 866s + nneginf <- sum(is.infinite(x) & x < 0, na.rm = TRUE) 866s + nposinf <- sum(is.infinite(x) & x > 0, na.rm = TRUE) 866s + res <- c(nneg, nzero, npos, nna, nneginf, nposinf) 866s + res <- as.double(res) 866s + names(res) <- c("-1", "0", "+1", "NA", "-Inf", "+Inf") 866s + if (is.integer(x)) res <- res[1:4] 866s + res 866s + } # signTabulate0() 866s > 866s > 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > # Subsetted tests 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > source("utils/validateIndicesFramework.R") 866s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 866s > x[2:3, 4:5] <- +Inf 866s > x[4:5, 1:2] <- -Inf 866s > for (idxs in index_cases) { 866s + validateIndicesTestVector(x, idxs, 866s + ftest = signTabulate, fsure = signTabulate0) 866s + } 866s > 866s 866s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 866s Copyright (C) 2024 The R Foundation for Statistical Computing 866s Platform: arm-unknown-linux-gnueabihf (32-bit) 866s 866s R is free software and comes with ABSOLUTELY NO WARRANTY. 866s You are welcome to redistribute it under certain conditions. 866s Type 'license()' or 'licence()' for distribution details. 866s 866s R is a collaborative project with many contributors. 866s Type 'contributors()' for more information and 866s 'citation()' on how to cite R or R packages in publications. 866s 866s Type 'demo()' for some demos, 'help()' for on-line help, or 866s 'help.start()' for an HTML browser interface to help. 866s Type 'q()' to quit R. 866s 866s > library("matrixStats") 866s > options(warn = 1) 866s > 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > # Consistency checks 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > set.seed(1) 866s > 866s > sum2_R <- function(x, na.rm = FALSE, idxs = NULL) { 866s + if (is.null(idxs)) { 866s + sum(x, na.rm = na.rm) 866s + } else { 866s + sum(x[idxs], na.rm = na.rm) 866s + } 866s + } # sum2_R() 866s > 866s > 866s > cat("Consistency checks:\n") 866s Consistency checks: 866s > for (kk in 1:20) { 866s + cat("Random test #", kk, "\n", sep = "") 866s + 866s + # Simulate data in a matrix of any shape 866s + n <- sample(1e3, size = 1L) 866s + x <- rnorm(n, sd = 100) 866s + 866s + # Add NAs? 866s + if ((kk %% 4) %in% c(3, 0)) { 866s + cat("Adding NAs\n") 866s + nna <- sample(n, size = 1L) 866s + na_values <- c(NA_real_, NaN) 866s + t <- sample(na_values, size = nna, replace = TRUE) 866s + x[sample(length(x), size = nna)] <- t 866s + } 866s + 866s + # Integer or double? 866s + if ((kk %% 4) %in% c(2, 0)) { 866s + cat("Coercing to integers\n") 866s + storage.mode(x) <- "integer" 866s + } 866s + 866s + na.rm <- sample(c(TRUE, FALSE), size = 1L) 866s + 866s + # Sum over all 866s + y0 <- sum2_R(x, na.rm = na.rm) 866s + y1 <- sum2(x, na.rm = na.rm) 866s + stopifnot(all.equal(y1, y0)) 866s + 866s + # Sum over subset 866s + nidxs <- sample(n, size = 1L) 866s + idxs <- sample(n, size = nidxs) 866s + y0 <- sum2_R(x, na.rm = na.rm, idxs = idxs) 866s + y1 <- sum2(x, na.rm = na.rm, idxs = idxs) 866s + stopifnot(all.equal(y1, y0)) 866s + 866s + if (storage.mode(x) == "integer") { 866s + storage.mode(x) <- "logical" 866s + 866s + y0 <- sum2_R(x, na.rm = na.rm) 866s + y1 <- sum2(x, na.rm = na.rm) 866s + stopifnot(all.equal(y1, y0)) 866s + 866s + y0 <- sum2_R(x, na.rm = na.rm, idxs = idxs) 866s + y1 <- sum2(x, na.rm = na.rm, idxs = idxs) 866s + stopifnot(all.equal(y1, y0)) 866s + } 866s + } # for (kk ...) 866s Random test #1 866s Random test #2 866s Coercing to integers 866s Random test #3 866s Adding NAs 866s Random test #4 866s Adding NAs 866s Coercing to integers 866s Random test #5 866s Random test #6 866s Coercing to integers 866s Random test #7 866s Adding NAs 866s Random test #8 866s Adding NAs 866s Coercing to integers 866s Random test #9 866s Random test #10 866s Coercing to integers 866s Random test #11 866s Adding NAs 866s Random test #12 866s Adding NAs 866s Coercing to integers 866s Random test #13 866s Random test #14 866s Coercing to integers 866s Random test #15 866s Adding NAs 866s Random test #16 866s Adding NAs 866s Coercing to integers 866s Random test #17 866s Random test #18 866s Coercing to integers 866s Random test #19 866s Adding NAs 866s Random test #20 866s Adding NAs 866s Coercing to integers 866s > 866s > 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > # All missing values 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > for (n in 0:2) { 866s + for (na.rm in c(FALSE, TRUE)) { 866s + x <- rep(NA_real_, times = n) 866s + y0 <- sum(x, na.rm = na.rm) 866s + y <- sum2(x, na.rm = na.rm) 866s + stopifnot(all.equal(y, y0)) 866s + 866s + x <- rep(NA_integer_, times = n) 866s + y0 <- sum(x, na.rm = na.rm) 866s + y <- sum2(x, na.rm = na.rm) 866s + stopifnot(all.equal(y, y0)) 866s + 866s + x <- rep(NA, times = n) 866s + y0 <- sum(x, na.rm = na.rm) 866s + y <- sum2(x, na.rm = na.rm) 866s + stopifnot(all.equal(y, y0)) 866s + } 866s + } 866s > 866s > 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > # Special cases 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > for (na.rm in c(FALSE, TRUE)) { 866s + # Summing over zero elements (integers) 866s + x <- integer(0) 866s + s1 <- sum(x, na.rm = na.rm) 866s + s2 <- sum2(x, na.rm = na.rm) 866s + stopifnot(identical(s1, s2)) 866s + 866s + x <- 1:10 866s + idxs <- integer(0) 866s + s1 <- sum(x[idxs], na.rm = na.rm) 866s + s2 <- sum2(x, idxs = idxs, na.rm = na.rm) 866s + stopifnot(identical(s1, s2)) 866s + 866s + # Summing over NA_integer_:s 866s + x <- rep(NA_integer_, times = 10L) 866s + s1 <- sum(x, na.rm = na.rm) 866s + s2 <- sum2(x, na.rm = na.rm) 866s + stopifnot(identical(s1, s2)) 866s + 866s + x <- rep(NA_integer_, times = 10L) 866s + idxs <- 1:5 866s + s1 <- sum(x[idxs], na.rm = na.rm) 866s + s2 <- sum2(x, idxs = idxs, na.rm = na.rm) 866s + stopifnot(identical(s1, s2)) 866s + 866s + 866s + # Summing over zero elements (doubles) 866s + x <- double(0) 866s + s1 <- sum(x) 866s + s2 <- sum2(x) 866s + stopifnot( 866s + identical(s1, 0), 866s + identical(s1, s2) 866s + ) 866s + 866s + x <- as.double(1:10) 866s + idxs <- integer(0) 866s + s1 <- sum(x[idxs]) 866s + s2 <- sum2(x, idxs = idxs) 866s + stopifnot( 866s + identical(s1, 0), 866s + identical(s1, s2) 866s + ) 866s + 866s + # Summing over NA_real_:s 866s + x <- rep(NA_real_, times = 10L) 866s + s1 <- sum(x, na.rm = na.rm) 866s + s2 <- sum2(x, na.rm = na.rm) 866s + stopifnot( 866s + !na.rm || s1 == 0, 866s + identical(s1, s2) 866s + ) 866s + 866s + x <- rep(NA_real_, times = 10L) 866s + idxs <- 1:5 866s + s1 <- sum(x[idxs], na.rm = na.rm) 866s + s2 <- sum2(x, idxs = idxs, na.rm = na.rm) 866s + stopifnot( 866s + !na.rm || s1 == 0, 866s + identical(s1, s2) 866s + ) 866s + 866s + # Summing over -Inf:s 866s + x <- rep(-Inf, times = 3L) 866s + s1 <- sum(x, na.rm = na.rm) 866s + s2 <- sum2(x, na.rm = na.rm) 866s + stopifnot( 866s + is.infinite(s1) && s1 < 0, 866s + identical(s1, s2) 866s + ) 866s + 866s + # Summing over +Inf:s 866s + x <- rep(+Inf, times = 3L) 866s + s1 <- sum(x, na.rm = na.rm) 866s + s2 <- sum2(x, na.rm = na.rm) 866s + stopifnot(identical(s1, s2)) 866s + stopifnot( 866s + is.infinite(s1) && s1 > 0, 866s + identical(s1, s2) 866s + ) 866s + 866s + # Summing over mix of -Inf:s and +Inf:s 866s + x <- rep(c(-Inf, +Inf), times = 3L) 866s + s1 <- sum(x, na.rm = na.rm) 866s + s2 <- sum2(x, na.rm = na.rm) 866s + stopifnot( 866s + is.nan(s1), 866s + identical(s1, s2) 866s + ) 866s + 866s + # Summing over mix of -Inf:s and +Inf:s and numerics 866s + x <- rep(c(-Inf, +Inf, 3.14), times = 2L) 866s + s1 <- sum(x, na.rm = na.rm) 866s + s2 <- sum2(x, na.rm = na.rm) 866s + stopifnot( 866s + is.nan(s1), 866s + identical(s1, s2) 866s + ) 866s + 866s + # Summing over mix of NaN, NA, +Inf, and numerics 866s + x <- c(NaN, NA, +Inf, 3.14) 866s + s1 <- sum(x, na.rm = na.rm) 866s + s2 <- sum2(x, na.rm = na.rm) 866s + if (na.rm) { 866s + stopifnot( 866s + is.infinite(s1) && s1 > 0, 866s + identical(s2, s1) 866s + ) 866s + } else { 866s + stopifnot(is.na(s1), is.na(s2)) 866s + ## NOTE, due to compiler optimization, it is not guaranteed that NA is 866s + ## returned here (as one would expect). NaN might very well be returned, 866s + ## when both NA and NaN are involved. This is an accepted feature in R, 866s + ## which is documented in help("is.nan"). See also 866s + ## https://stat.ethz.ch/pipermail/r-devel/2017-April/074009.html. 866s + ## Thus, we cannot guarantee that s1 is identical to s0. 866s + } 866s + 866s + # Summing over mix of NaN, NA, +Inf, and numerics 866s + x <- c(NA, NaN, +Inf, 3.14) 866s + s1 <- sum(x, na.rm = na.rm) 866s + s2 <- sum2(x, na.rm = na.rm) 866s + if (na.rm) { 866s + stopifnot( 866s + is.infinite(s1) && s1 > 0, 866s + identical(s2, s1) 866s + ) 866s + } else { 866s + stopifnot(is.na(s1), is.na(s2)) 866s + ## NOTE, due to compiler optimization, it is not guaranteed that NA is 866s + ## returned here (as one would expect). NaN might very well be returned, 866s + ## when both NA and NaN are involved. This is an accepted feature in R, 866s + ## which is documented in help("is.nan"). See also 866s + ## https://stat.ethz.ch/pipermail/r-devel/2017-April/074009.html. 866s + ## Thus, we cannot guarantee that s1 is identical to s0. 866s + } 866s + } 866s > 866s > 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > # Summing of large integers 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > x <- c(.Machine$integer.max, 1L, -.Machine$integer.max) 866s > 866s > # Total gives integer overflow 866s > s1 <- sum(x[1:2]) # NA_integer_ w/ warning 866s > s2 <- sum2(x[1:2]) # NA_integer_ w/ warning 866s > stopifnot( 866s + getRversion() >= "3.5.0" || identical(s1, NA_integer_), 866s + identical(s2, NA_integer_) 866s + ) 866s > 866s > ## Assert above warning 866s > res <- tryCatch({ 866s + s2 <- sum2(x[1:2]) 866s + }, warning = identity) 866s > stopifnot(inherits(res, "warning")) 866s > 866s > 866s > # Total gives integer overflow (coerce to numeric) 866s > s1 <- sum(as.numeric(x[1:2])) # 2147483648 866s > s2 <- sum2(as.numeric(x[1:2])) # 2147483648 866s > s3 <- sum2(x[1:2], mode = "double") # 2147483648 866s > stopifnot( 866s + identical(s1, 2147483648), 866s + identical(s1, s2), 866s + identical(s1, s3) 866s + ) 866s > 866s > # Cumulative sum would give integer overflow but not the total 866s > s1 <- sum(x) # 1L 866s > s2 <- sum2(x) # 1L 866s > stopifnot( 866s + identical(s1, 1L), 866s + identical(s1, s2) 866s + ) 866s > 866s > # Input is double but coersing result to integer 866s > x <- c(1, 2, 3.1) 866s > s1 <- sum2(x) 866s > s2 <- sum2(x, mode = "integer") 866s > stopifnot( 866s + identical(as.integer(s1), s2) 866s + ) 866s > 866s > ## Assert above warning 866s > res <- tryCatch({ 866s + s2 <- sum2(x, mode = "integer") 866s + }, warning = identity) 866s > stopifnot(inherits(res, "warning")) 866s > 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > # Summing of large doubles 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > ## Double overflow 866s > x <- rep(.Machine$double.xmax, times = 2L) 866s > y0 <- sum(x) 866s > print(y0) 866s [1] Inf 866s > y <- sum2(x) 866s > print(y) 866s [1] Inf 866s > stopifnot( 866s + is.infinite(y) && y > 0, 866s + identical(y, y0) 866s + ) 866s > 866s > x <- rep(-.Machine$double.xmax, times = 2L) 866s > y0 <- sum(x) 866s > print(y0) 866s [1] -Inf 866s > y <- sum2(x) 866s > print(y) 866s [1] -Inf 866s > stopifnot( 866s + is.infinite(y) && y < 0, 866s + identical(y, y0) 866s + ) 866s > 866s > 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > # Argument 'idxs' 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > x <- 1:10 866s > idxs_list <- list( 866s + integer = 1:5, 866s + double = as.double(1:5), 866s + logical = (x <= 5) 866s + ) 866s > 866s > for (idxs in idxs_list) { 866s + cat("idxs:\n") 866s + str(idxs) 866s + s1 <- sum(x[idxs], na.rm = TRUE) 866s + s2 <- sum2(x, idxs = idxs, na.rm = TRUE) 866s + stopifnot(identical(s1, s2)) 866s + } 866s idxs: 866s int [1:5] 1 2 3 4 5 866s idxs: 866s num [1:5] 1 2 3 4 5 866s idxs: 866s logi [1:10] TRUE TRUE TRUE TRUE TRUE FALSE ... 866s > 866s 866s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 866s Copyright (C) 2024 The R Foundation for Statistical Computing 866s Platform: arm-unknown-linux-gnueabihf (32-bit) 866s 866s R is free software and comes with ABSOLUTELY NO WARRANTY. 866s You are welcome to redistribute it under certain conditions. 866s Type 'license()' or 'licence()' for distribution details. 866s 866s R is a collaborative project with many contributors. 866s Type 'contributors()' for more information and 866s 'citation()' on how to cite R or R packages in publications. 866s 866s Type 'demo()' for some demos, 'help()' for on-line help, or 866s 'help.start()' for an HTML browser interface to help. 866s Type 'q()' to quit R. 866s 866s > library("matrixStats") 866s > 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > # Subsetted tests 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > source("utils/validateIndicesFramework.R") 866s > x <- runif(6, min = -6, max = 6) 866s > storage.mode(x) <- "integer" 866s > for (idxs in index_cases) { 866s + validateIndicesTestVector(x, idxs, 866s + ftest = sum2, fsure = sum, 866s + na.rm = FALSE) 866s + validateIndicesTestVector(x, idxs, 866s + ftest = sum2, fsure = sum, 866s + na.rm = TRUE) 866s + } 866s > 866s 866s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 866s Copyright (C) 2024 The R Foundation for Statistical Computing 866s Platform: arm-unknown-linux-gnueabihf (32-bit) 866s 866s R is free software and comes with ABSOLUTELY NO WARRANTY. 866s You are welcome to redistribute it under certain conditions. 866s Type 'license()' or 'licence()' for distribution details. 866s 866s R is a collaborative project with many contributors. 866s Type 'contributors()' for more information and 866s 'citation()' on how to cite R or R packages in publications. 866s 866s Type 'demo()' for some demos, 'help()' for on-line help, or 866s 'help.start()' for an HTML browser interface to help. 866s Type 'q()' to quit R. 866s 866s > library(matrixStats) 866s > source("utils/validateIndicesFramework.R") 866s > 866s > oopts <- options(matrixStats.validateIndices = "ignore") 866s > 866s > ftest <- function(x, idxs) validateIndices(idxs, length(x)) 866s > 866s > x <- 1:6 866s > for (idxs in index_cases) { 866s + for (mode in c("integer", "numeric", "logical")) { 866s + if (!is.null(idxs)) { 866s + suppressWarnings({storage.mode(idxs) <- mode}) 866s + } 866s + validateIndicesTestVector(x, idxs, ftest = ftest, fsure = identity) 866s + } 866s + } 866s > 866s > ftest <- function(x, idxs) validateIndices(idxs, length(x)) 866s > 866s > for (idxs in index_error_cases) { 866s + validateIndicesTestVector(x, idxs, ftest = ftest, fsure = identity) 866s + } 866s > 866s > 866s > ftest <- function(x, rows, cols) { 866s + vr <- validateIndices(rows, dim(x)[1], FALSE) 866s + vc <- validateIndices(cols, dim(x)[2], FALSE) 866s + 866s + stopifnot(all((vr > 0 & vr <= dim(x)[1]) | is.na(vr))) 866s + stopifnot(all((vc > 0 & vc <= dim(x)[2]) | is.na(vc))) 866s + suppressWarnings(x <- x[vr, vc, drop = FALSE]) 866s + x 866s + } 866s > 866s > x <- matrix(1:36, nrow = 6, ncol = 6) 866s > for (rows in index_cases) { 866s + for (cols in index_cases) { 866s + validateIndicesTestMatrix(x, rows, cols, ftest = ftest, fsure = identity) 866s + } 866s + } 866s > 866s > # Testing for 64-bit builds (64 bits = 8 bytes) 866s > if (.Machine$sizeof.pointer == 8L) { 866s + validateIndices(c(1.25*2^40, 3, 1*2^38, 1, 1.4*2^39), maxIdx = 1*2^41) 866s + } 866s > 866s > options(oopts) 866s > 866s 866s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 866s Copyright (C) 2024 The R Foundation for Statistical Computing 866s Platform: arm-unknown-linux-gnueabihf (32-bit) 866s 866s R is free software and comes with ABSOLUTELY NO WARRANTY. 866s You are welcome to redistribute it under certain conditions. 866s Type 'license()' or 'licence()' for distribution details. 866s 866s R is a collaborative project with many contributors. 866s Type 'contributors()' for more information and 866s 'citation()' on how to cite R or R packages in publications. 866s 866s Type 'demo()' for some demos, 'help()' for on-line help, or 866s 'help.start()' for an HTML browser interface to help. 866s Type 'q()' to quit R. 866s 866s > library("matrixStats") 866s > 866s > set.seed(1) 866s > x <- rnorm(1e4) 866s > 866s > 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > # Variance estimators 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > sigma2_a <- var(x) 866s > cat(sprintf("var(x) = %g\n", sigma2_a)) 866s var(x) = 1.02487 866s > 866s > sigma2_b <- varDiff(x) 866s > cat(sprintf("varDiff(x) = %g\n", sigma2_b)) 866s varDiff(x) = 1.01224 866s > 866s > d <- abs(sigma2_b - sigma2_a) 866s > cat(sprintf("Absolute difference = %g\n", d)) 866s Absolute difference = 0.0126268 866s > stopifnot(d < 0.02) 866s > 866s > 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > # Standard deviation estimators 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > sigma_a <- sd(x) 866s > cat(sprintf("sd(x) = %g\n", sigma_a)) 866s sd(x) = 1.01236 866s > 866s > sigma_b <- sdDiff(x) 866s > cat(sprintf("sdDiff(x) = %g\n", sigma_b)) 866s sdDiff(x) = 1.0061 866s > 866s > d <- abs(sigma_b - sigma_a) 866s > cat(sprintf("Absolute difference = %g\n", d)) 866s Absolute difference = 0.00625567 866s > stopifnot(d < 0.01) 866s > 866s > # Sanity checks 866s > stopifnot(abs(sigma2_a - sigma_a ^ 2) < 1e-9) 866s > stopifnot(abs(sigma2_b - sigma_b ^ 2) < 1e-9) 866s > 866s > 866s > sigma_a2 <- mad(x) 866s > cat(sprintf("mad(x) = %g\n", sigma_a2)) 866s mad(x) = 0.998376 866s > 866s > sigma_b2 <- madDiff(x) 866s > cat(sprintf("madDiff(x) = %g\n", sigma_b2)) 866s madDiff(x) = 1.02513 866s > 866s > d <- abs(sigma_b2 - sigma_a2) 866s > cat(sprintf("Absolute difference = %g\n", d)) 866s Absolute difference = 0.0267497 866s > stopifnot(d < 0.05) 866s > 866s > 866s > sigma_a3 <- IQR(x) 866s > cat(sprintf("IQR(x) = %g\n", sigma_a3)) 866s IQR(x) = 1.35105 866s > 866s > sigma_b3 <- iqrDiff(x) 866s > cat(sprintf("iqrDiff(x) = %g\n", sigma_b3)) 866s iqrDiff(x) = 1.37797 866s > 866s > d <- abs(sigma_b3 - sigma_a3) 866s > cat(sprintf("Absolute difference = %g\n", d)) 866s Absolute difference = 0.0269152 866s > stopifnot(d < 0.05) 866s > 866s > 866s > 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > # Trimmed estimators 866s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 866s > y <- x 866s > outliers <- sample(length(x), size = 0.1 * length(x)) 866s > y[outliers] <- 100 * y[outliers] 866s > 866s > sigma_ao <- sd(y[-outliers]) 866s > cat(sprintf("sd(y) = %g\n", sigma_ao)) 866s sd(y) = 1.01166 866s > 866s > sigma_bo <- sdDiff(y[-outliers]) 866s > cat(sprintf("sdDiff(y) = %g\n", sigma_bo)) 866s sdDiff(y) = 1.00743 866s > 866s > d <- abs(sigma_b - sigma_a) 866s > cat(sprintf("Absolute difference = %g\n", d)) 866s Absolute difference = 0.00625567 866s > stopifnot(d < 0.01) 866s > 866s > sigma_bot <- sdDiff(y, trim = 0.05) 866s > cat(sprintf("sdDiff(y, trim = 0.05) = %g\n", sigma_bot)) 866s sdDiff(y, trim = 0.05) = 7.74327 866s > 866s > d <- abs(sigma_bot - sigma_a) 866s > cat(sprintf("Absolute difference = %g\n", d)) 866s Absolute difference = 6.73091 866s > #stopifnot(d < 1e-3) 866s > 866s > sigma_cot <- madDiff(y, trim = 0.05) 866s > cat(sprintf("madDiff(y, trim = 0.05) = %g\n", sigma_cot)) 866s madDiff(y, trim = 0.05) = 1.15278 866s > 866s > sigma_dot <- iqrDiff(y, trim = 0.05) 866s > cat(sprintf("iqrDiff(y, trim = 0.05) = %g\n", sigma_dot)) 866s iqrDiff(y, trim = 0.05) = 1.55762 866s > 866s > 866s > fcns <- list( 866s + varDiff = varDiff, 866s + sdDiff = sdDiff, 866s + madDiff = madDiff, 866s + iqrDiff = iqrDiff 866s + ) 866s > 866s > for (name in names(fcns)) { 866s + cat(sprintf("%s()...\n", name)) 866s + fcn <- fcns[[name]] 866s + 866s + for (mode in c("integer", "double")) { 866s + cat("mode: ", mode, "", sep = "") 866s + for (n in 0:3) { 866s + x <- runif(n, min = -5, max = 5) 866s + storage.mode(x) <- mode 866s + str(x) 866s + 866s + y <- fcn(x) 866s + yt <- fcn(x, trim = 0.1) 866s + str(list("non-trimmed" = y, trimmed = yt)) 866s + } # for (mode ...) 866s + } 866s + 866s + cat(sprintf("%s()...DONE\n", name)) 866s + } # for (name ...) 866s varDiff()... 866s mode: integer int(0) 866s List of 2 866s $ non-trimmed: num NA 866s $ trimmed : num NA 866s int -4 866s List of 2 866s $ non-trimmed: num NA 866s $ trimmed : num NA 866s int [1:2] 3 2 866s List of 2 866s $ non-trimmed: num NA 866s $ trimmed : num NA 866s int [1:3] 1 4 -1 866s List of 2 866s $ non-trimmed: num 16 866s $ trimmed : num 16 866s mode: double num(0) 866s List of 2 866s $ non-trimmed: num NA 866s $ trimmed : num NA 866s num -0.794 866s List of 2 866s $ non-trimmed: num NA 866s $ trimmed : num NA 866s num [1:2] 0.897 -3.728 866s List of 2 866s $ non-trimmed: num NA 866s $ trimmed : num NA 866s num [1:3] 2.07 -1.13 1.94 866s List of 2 866s $ non-trimmed: num 9.83 866s $ trimmed : num 9.83 866s varDiff()...DONE 866s sdDiff()... 866s mode: integer int(0) 866s List of 2 866s $ non-trimmed: num NA 866s $ trimmed : num NA 866s int 2 866s List of 2 866s $ non-trimmed: num NA 866s $ trimmed : num NA 866s int [1:2] -4 1 866s List of 2 866s $ non-trimmed: num NA 866s $ trimmed : num NA 866s int [1:3] -2 1 -1 866s List of 2 866s $ non-trimmed: num 2.5 866s $ trimmed : num 2.5 866s mode: double num(0) 866s List of 2 866s $ non-trimmed: num NA 866s $ trimmed : num NA 866s num -3.78 866s List of 2 866s $ non-trimmed: num NA 866s $ trimmed : num NA 866s num [1:2] -2.04 2.38 866s List of 2 866s $ non-trimmed: num NA 866s $ trimmed : num NA 866s num [1:3] 1.42 -2.14 1.14 866s List of 2 866s $ non-trimmed: num 3.42 866s $ trimmed : num 3.42 866s sdDiff()...DONE 866s madDiff()... 866s mode: integer int(0) 866s List of 2 866s $ non-trimmed: num NA 866s $ trimmed : num NA 866s int -1 866s List of 2 866s $ non-trimmed: num NA 866s $ trimmed : num NA 866s int [1:2] -1 4 866s List of 2 866s $ non-trimmed: num NA 866s $ trimmed : num NA 866s int [1:3] -1 0 -3 866s List of 2 866s $ non-trimmed: num 2.1 866s $ trimmed : num 2.1 866s mode: double num(0) 866s List of 2 866s $ non-trimmed: num NA 866s $ trimmed : num NA 866s num -1.13 866s List of 2 866s $ non-trimmed: num NA 866s $ trimmed : num NA 866s num [1:2] -1.7 -1.21 866s List of 2 866s $ non-trimmed: num NA 866s $ trimmed : num NA 866s num [1:3] -2.39 -0.464 3.086 866s List of 2 866s $ non-trimmed: num 0.851 866s $ trimmed : num 0.851 866s madDiff()...DONE 866s iqrDiff()... 866s mode: integer int(0) 866s List of 2 866s $ non-trimmed: num NA 866s $ trimmed : num NA 866s int 3 866s List of 2 866s $ non-trimmed: num 0 866s $ trimmed : num 0 866s int [1:2] -3 4 866s List of 2 866s $ non-trimmed: num 0 866s $ trimmed : num 0 866s int [1:3] 0 -2 -2 866s List of 2 866s $ non-trimmed: num 0.707 866s $ trimmed : num 0.707 867s mode: double num(0) 867s List of 2 867s $ non-trimmed: num NA 867s $ trimmed : num NA 867s num -4.46 867s List of 2 867s $ non-trimmed: num 0 867s $ trimmed : num 0 867s num [1:2] 3.67 1.02 867s List of 2 867s $ non-trimmed: num 0 867s $ trimmed : num 0 867s num [1:3] -0.537 -2.733 2.857 867s List of 2 867s $ non-trimmed: num 2.75 867s $ trimmed : num 2.75 867s iqrDiff()...DONE 867s > 867s 867s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 867s Copyright (C) 2024 The R Foundation for Statistical Computing 867s Platform: arm-unknown-linux-gnueabihf (32-bit) 867s 867s R is free software and comes with ABSOLUTELY NO WARRANTY. 867s You are welcome to redistribute it under certain conditions. 867s Type 'license()' or 'licence()' for distribution details. 867s 867s R is a collaborative project with many contributors. 867s Type 'contributors()' for more information and 867s 'citation()' on how to cite R or R packages in publications. 867s 867s Type 'demo()' for some demos, 'help()' for on-line help, or 867s 'help.start()' for an HTML browser interface to help. 867s Type 'q()' to quit R. 867s 867s > library("matrixStats") 867s > 867s > fcns <- list( 867s + varDiff = varDiff, 867s + sdDiff = sdDiff, 867s + madDiff = madDiff, 867s + iqrDiff = iqrDiff 867s + ) 867s > 867s > 867s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 867s > # Subsetted tests 867s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 867s > source("utils/validateIndicesFramework.R") 867s > for (name in names(fcns)) { 867s + cat(sprintf("subsetted tests on %s()...\n", name)) 867s + fcn <- fcns[[name]] 867s + 867s + for (mode in c("numeric", "integer")) { 867s + x <- runif(6, min = -6, max = 6) 867s + storage.mode(x) <- mode 867s + trim <- runif(1, min = 0, max = 0.5) 867s + if (mode == "numeric") x[1] <- Inf 867s + 867s + for (diff in 1:2) { 867s + for (idxs in index_cases) { 867s + validateIndicesTestVector(x, idxs, 867s + ftest = fcn, fsure = fcn, 867s + na.rm = TRUE, diff = diff, trim = trim) 867s + validateIndicesTestVector(x, idxs, 867s + ftest = fcn, fsure = fcn, 867s + na.rm = FALSE, diff = diff, trim = trim) 867s + } 867s + } 867s + } 867s + cat(sprintf("%s()...DONE\n", name)) 867s + } 867s subsetted tests on varDiff()... 867s varDiff()...DONE 867s subsetted tests on sdDiff()... 867s sdDiff()...DONE 867s subsetted tests on madDiff()... 867s madDiff()...DONE 867s subsetted tests on iqrDiff()... 867s iqrDiff()...DONE 867s > 867s 867s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 867s Copyright (C) 2024 The R Foundation for Statistical Computing 867s Platform: arm-unknown-linux-gnueabihf (32-bit) 867s 867s R is free software and comes with ABSOLUTELY NO WARRANTY. 867s You are welcome to redistribute it under certain conditions. 867s Type 'license()' or 'licence()' for distribution details. 867s 867s R is a collaborative project with many contributors. 867s Type 'contributors()' for more information and 867s 'citation()' on how to cite R or R packages in publications. 867s 867s Type 'demo()' for some demos, 'help()' for on-line help, or 867s 'help.start()' for an HTML browser interface to help. 867s Type 'q()' to quit R. 867s 868s > library("matrixStats") 868s > 868s > for (mode in c("logical", "integer", "double")) { 868s + cat("mode: ", mode, "", sep = "") 868s + n <- 2L 868s + x <- runif(n, min = -5, max = 5) 868s + if (mode == "logical") { 868s + x <- x > 0 868s + } 868s + storage.mode(x) <- mode 868s + str(x) 868s + 868s + cat("All weights are 1\n") 868s + w <- rep(1, times = n) 868s + m0 <- weighted.mean(x, w) 868s + m1 <- weightedMean(x, w) 868s + str(list(m0 = m0, m1 = m1)) 868s + stopifnot(identical(m1, m0)) 868s + 868s + cat("First weight is 5\n") 868s + # Pull the mean towards zero 868s + w[1] <- 5 868s + str(w) 868s + m0 <- weighted.mean(x, w) 868s + m1 <- weightedMean(x, w) 868s + str(list(m0 = m0, m1 = m1)) 868s + stopifnot(identical(m1, m0)) 868s + 868s + cat("All weights are 0\n") 868s + # All weights set to zero 868s + w <- rep(0, times = n) 868s + m0 <- weighted.mean(x, w) 868s + m1 <- weightedMean(x, w) 868s + str(list(m0 = m0, m1 = m1)) 868s + stopifnot(identical(m1, m0)) 868s + 868s + cat("First weight is 8.5\n") 868s + # Put even more weight on the zero 868s + w[1] <- 8.5 868s + m0 <- weighted.mean(x, w) 868s + m1 <- weightedMean(x, w) 868s + str(list(m0 = m0, m1 = m1)) 868s + stopifnot(identical(m1, m0)) 868s + 868s + cat("First weight is Inf\n") 868s + # All weight on the first value 868s + w[1] <- Inf 868s + m0 <- weighted.mean(x, w) 868s + m1 <- weightedMean(x, w) 868s + str(list(m0 = m0, m1 = m1)) 868s + stopifnot(identical(m1, m0)) 868s + 868s + cat("Last weight is Inf\n") 868s + # All weight on the last value 868s + w[1] <- 1 868s + w[n] <- Inf 868s + m0 <- weighted.mean(x, w) 868s + m1 <- weightedMean(x, w) 868s + str(list(m0 = m0, m1 = m1)) 868s + stopifnot(identical(m1, m0)) 868s + } # for (mode ...) 868s mode: logical logi [1:2] FALSE TRUE 868s All weights are 1 868s List of 2 868s $ m0: num 0.5 868s $ m1: num 0.5 868s First weight is 5 868s num [1:2] 5 1 868s List of 2 868s $ m0: num 0.167 868s $ m1: num 0.167 868s All weights are 0 868s List of 2 868s $ m0: num NaN 868s $ m1: num NaN 868s First weight is 8.5 868s List of 2 868s $ m0: num 0 868s $ m1: num 0 868s First weight is Inf 868s List of 2 868s $ m0: num NaN 868s $ m1: num NaN 868s Last weight is Inf 868s List of 2 868s $ m0: num NaN 868s $ m1: num NaN 868s mode: integer int [1:2] 1 0 868s All weights are 1 868s List of 2 868s $ m0: num 0.5 868s $ m1: num 0.5 868s First weight is 5 868s num [1:2] 5 1 868s List of 2 868s $ m0: num 0.833 868s $ m1: num 0.833 868s All weights are 0 868s List of 2 868s $ m0: num NaN 868s $ m1: num NaN 868s First weight is 8.5 868s List of 2 868s $ m0: num 1 868s $ m1: num 1 868s First weight is Inf 868s List of 2 868s *** Testing for missing values 868s $ m0: num NaN 868s $ m1: num NaN 868s Last weight is Inf 868s List of 2 868s $ m0: num NaN 868s $ m1: num NaN 868s mode: double num [1:2] -2.3027 -0.0166 868s All weights are 1 868s List of 2 868s $ m0: num -1.16 868s $ m1: num -1.16 868s First weight is 5 868s num [1:2] 5 1 868s List of 2 868s $ m0: num -1.92 868s $ m1: num -1.92 868s All weights are 0 868s List of 2 868s $ m0: num NaN 868s $ m1: num NaN 868s First weight is 8.5 868s List of 2 868s $ m0: num -2.3 868s $ m1: num -2.3 868s First weight is Inf 868s List of 2 868s $ m0: num NaN 868s $ m1: num NaN 868s Last weight is Inf 868s List of 2 868s $ m0: num NaN 868s $ m1: num NaN 868s > 868s > 868s > message("*** Testing for missing values") 868s > # NA tests 868s > xs <- list(A = c(1, 2, 3), B = c(NA, 2, 3), C = c(NA, 2, 3)) 868s > ws <- list(A = c(1, 1, 1), B = c(NA, 1, 1), C = c(1, NA, 1)) 868s > ## NOTE: The (B, B) case with na.rm = TRUE is interesting because 868s > ## even if NAs in 'w' are not dropped by na.rm = TRUE, this one 868s > ## is because 'x' is dropped and therefore that first element 868s > ## is skipped in the computation. It basically does 868s > ## keep <- !is.na(x); x <- x[keep]; w <- w[keep] 868s > ## without looking at 'w'. 868s > for (x in xs) { 868s + for (mode in c("logical", "integer", "double")) { 868s + storage.mode(x) <- mode 868s + for (w in ws) { 868s + for (na.rm in c(FALSE, TRUE)) { 868s + cat(sprintf("mode: %s, na.rm = %s\n", mode, na.rm)) 868s + str(list(x = x, w = w)) 868s + m0 <- weighted.mean(x, w, na.rm = na.rm) 868s + m1 <- weightedMean(x, w, na.rm = na.rm) 868s + str(list(m0 = m0, m1 = m1)) 868s + stopifnot(all.equal(m1, m0)) 868s + } 868s + } 868s + } 868s + } 868s mode: logical, na.rm = FALSE 868s List of 2 868s $ x: logi [1:3] TRUE TRUE TRUE 868s $ w: num [1:3] 1 1 1 868s List of 2 868s $ m0: num 1 868s $ m1: num 1 868s mode: logical, na.rm = TRUE 868s List of 2 868s $ x: logi [1:3] TRUE TRUE TRUE 868s $ w: num [1:3] 1 1 1 868s List of 2 868s $ m0: num 1 868s $ m1: num 1 868s mode: logical, na.rm = FALSE 868s List of 2 868s $ x: logi [1:3] TRUE TRUE TRUE 868s $ w: num [1:3] NA 1 1 868s List of 2 868s $ m0: num NA 868s $ m1: num NA 868s mode: logical, na.rm = TRUE 868s List of 2 868s $ x: logi [1:3] TRUE TRUE TRUE 868s $ w: num [1:3] NA 1 1 868s List of 2 868s $ m0: num NA 868s $ m1: num NA 868s mode: logical, na.rm = FALSE 868s List of 2 868s $ x: logi [1:3] TRUE TRUE TRUE 868s $ w: num [1:3] 1 NA 1 868s List of 2 868s $ m0: num NA 868s $ m1: num NA 868s mode: logical, na.rm = TRUE 868s List of 2 868s $ x: logi [1:3] TRUE TRUE TRUE 868s $ w: num [1:3] 1 NA 1 868s List of 2 868s $ m0: num NA 868s $ m1: num NA 868s mode: integer, na.rm = FALSE 868s List of 2 868s $ x: int [1:3] 1 1 1 868s $ w: num [1:3] 1 1 1 868s List of 2 868s $ m0: num 1 869s $ m1: num 1 869s mode: integer, na.rm = TRUE 869s List of 2 869s $ x: int [1:3] 1 1 1 869s $ w: num [1:3] 1 1 1 869s List of 2 869s $ m0: num 1 869s $ m1: num 1 869s mode: integer, na.rm = FALSE 869s List of 2 869s $ x: int [1:3] 1 1 1 869s $ w: num [1:3] NA 1 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: integer, na.rm = TRUE 869s List of 2 869s $ x: int [1:3] 1 1 1 869s $ w: num [1:3] NA 1 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: integer, na.rm = FALSE 869s List of 2 869s $ x: int [1:3] 1 1 1 869s $ w: num [1:3] 1 NA 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: integer, na.rm = TRUE 869s List of 2 869s $ x: int [1:3] 1 1 1 869s $ w: num [1:3] 1 NA 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: double, na.rm = FALSE 869s List of 2 869s $ x: num [1:3] 1 1 1 869s $ w: num [1:3] 1 1 1 869s List of 2 869s $ m0: num 1 869s $ m1: num 1 869s mode: double, na.rm = TRUE 869s List of 2 869s $ x: num [1:3] 1 1 1 869s $ w: num [1:3] 1 1 1 869s List of 2 869s $ m0: num 1 869s $ m1: num 1 869s mode: double, na.rm = FALSE 869s List of 2 869s $ x: num [1:3] 1 1 1 869s $ w: num [1:3] NA 1 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: double, na.rm = TRUE 869s List of 2 869s $ x: num [1:3] 1 1 1 869s $ w: num [1:3] NA 1 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: double, na.rm = FALSE 869s List of 2 869s $ x: num [1:3] 1 1 1 869s $ w: num [1:3] 1 NA 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: double, na.rm = TRUE 869s List of 2 869s $ x: num [1:3] 1 1 1 869s $ w: num [1:3] 1 NA 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: logical, na.rm = FALSE 869s List of 2 869s $ x: logi [1:3] NA TRUE TRUE 869s $ w: num [1:3] 1 1 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: logical, na.rm = TRUE 869s List of 2 869s $ x: logi [1:3] NA TRUE TRUE 869s $ w: num [1:3] 1 1 1 869s List of 2 869s $ m0: num 1 869s $ m1: num 1 869s mode: logical, na.rm = FALSE 869s List of 2 869s $ x: logi [1:3] NA TRUE TRUE 869s $ w: num [1:3] NA 1 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: logical, na.rm = TRUE 869s List of 2 869s $ x: logi [1:3] NA TRUE TRUE 869s $ w: num [1:3] NA 1 1 869s List of 2 869s $ m0: num 1 869s $ m1: num 1 869s mode: logical, na.rm = FALSE 869s List of 2 869s $ x: logi [1:3] NA TRUE TRUE 869s $ w: num [1:3] 1 NA 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: logical, na.rm = TRUE 869s List of 2 869s $ x: logi [1:3] NA TRUE TRUE 869s $ w: num [1:3] 1 NA 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: integer, na.rm = FALSE 869s List of 2 869s $ x: int [1:3] NA 1 1 869s $ w: num [1:3] 1 1 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: integer, na.rm = TRUE 869s List of 2 869s $ x: int [1:3] NA 1 1 869s $ w: num [1:3] 1 1 1 869s List of 2 869s $ m0: num 1 869s $ m1: num 1 869s mode: integer, na.rm = FALSE 869s List of 2 869s $ x: int [1:3] NA 1 1 869s $ w: num [1:3] NA 1 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: integer, na.rm = TRUE 869s List of 2 869s $ x: int [1:3] NA 1 1 869s $ w: num [1:3] NA 1 1 869s List of 2 869s $ m0: num 1 869s $ m1: num 1 869s mode: integer, na.rm = FALSE 869s List of 2 869s $ x: int [1:3] NA 1 1 869s $ w: num [1:3] 1 NA 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: integer, na.rm = TRUE 869s List of 2 869s $ x: int [1:3] NA 1 1 869s $ w: num [1:3] 1 NA 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: double, na.rm = FALSE 869s List of 2 869s $ x: num [1:3] NA 1 1 869s $ w: num [1:3] 1 1 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: double, na.rm = TRUE 869s List of 2 869s $ x: num [1:3] NA 1 1 869s $ w: num [1:3] 1 1 1 869s List of 2 869s $ m0: num 1 869s $ m1: num 1 869s mode: double, na.rm = FALSE 869s List of 2 869s $ x: num [1:3] NA 1 1 869s $ w: num [1:3] NA 1 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: double, na.rm = TRUE 869s List of 2 869s $ x: num [1:3] NA 1 1 869s $ w: num [1:3] NA 1 1 869s List of 2 869s $ m0: num 1 869s $ m1: num 1 869s mode: double, na.rm = FALSE 869s List of 2 869s $ x: num [1:3] NA 1 1 869s $ w: num [1:3] 1 NA 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: double, na.rm = TRUE 869s List of 2 869s $ x: num [1:3] NA 1 1 869s $ w: num [1:3] 1 NA 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: logical, na.rm = FALSE 869s List of 2 869s $ x: logi [1:3] NA TRUE TRUE 869s $ w: num [1:3] 1 1 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: logical, na.rm = TRUE 869s List of 2 869s $ x: logi [1:3] NA TRUE TRUE 869s $ w: num [1:3] 1 1 1 869s List of 2 869s $ m0: num 1 869s $ m1: num 1 869s mode: logical, na.rm = FALSE 869s List of 2 869s $ x: logi [1:3] NA TRUE TRUE 869s $ w: num [1:3] NA 1 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: logical, na.rm = TRUE 869s List of 2 869s $ x: logi [1:3] NA TRUE TRUE 869s $ w: num [1:3] NA 1 1 869s List of 2 869s $ m0: num 1 869s $ m1: num 1 869s mode: logical, na.rm = FALSE 869s List of 2 869s $ x: logi [1:3] NA TRUE TRUE 869s $ w: num [1:3] 1 NA 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: logical, na.rm = TRUE 869s List of 2 869s $ x: logi [1:3] NA TRUE TRUE 869s $ w: num [1:3] 1 NA 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: integer, na.rm = FALSE 869s List of 2 869s $ x: int [1:3] NA 1 1 869s $ w: num [1:3] 1 1 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: integer, na.rm = TRUE 869s List of 2 869s $ x: int [1:3] NA 1 1 869s $ w: num [1:3] 1 1 1 869s List of 2 869s $ m0: num 1 869s $ m1: num 1 869s mode: integer, na.rm = FALSE 869s List of 2 869s $ x: int [1:3] NA 1 1 869s $ w: num [1:3] NA 1 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: integer, na.rm = TRUE 869s List of 2 869s $ x: int [1:3] NA 1 1 869s $ w: num [1:3] NA 1 1 869s List of 2 869s $ m0: num 1 869s $ m1: num 1 869s mode: integer, na.rm = FALSE 869s List of 2 869s $ x: int [1:3] NA 1 1 869s $ w: num [1:3] 1 NA 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: integer, na.rm = TRUE 869s List of 2 869s $ x: int [1:3] NA 1 1 869s $ w: num [1:3] 1 NA 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: double, na.rm = FALSE 869s List of 2 869s $ x: num [1:3] NA 1 1 869s $ w: num [1:3] 1 1 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: double, na.rm = TRUE 869s List of 2 869s $ x: num [1:3] NA 1 1 869s $ w: num [1:3] 1 1 1 869s List of 2 869s $ m0: num 1 869s $ m1: num 1 869s mode: double, na.rm = FALSE 869s List of 2 869s $ x: num [1:3] NA 1 1 869s $ w: num [1:3] NA 1 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: double, na.rm = TRUE 869s List of 2 869s $ x: num [1:3] NA 1 1 869s $ w: num [1:3] NA 1 1 869s List of 2 869s $ m0: num 1 869s $ m1: num 1 869s mode: double, na.rm = FALSE 869s List of 2 869s $ x: num [1:3] NA 1 1 869s $ w: num [1:3] 1 NA 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s mode: double, na.rm = TRUE 869s List of 2 869s $ x: num [1:3] NA 1 1 869s $ w: num [1:3] 1 NA 1 869s List of 2 869s $ m0: num NA 869s $ m1: num NA 869s > 869s 869s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 869s Copyright (C) 2024 The R Foundation for Statistical Computing 869s Platform: arm-unknown-linux-gnueabihf (32-bit) 869s 869s R is free software and comes with ABSOLUTELY NO WARRANTY. 869s You are welcome to redistribute it under certain conditions. 869s Type 'license()' or 'licence()' for distribution details. 869s 869s R is a collaborative project with many contributors. 869s Type 'contributors()' for more information and 869s 'citation()' on how to cite R or R packages in publications. 869s 869s Type 'demo()' for some demos, 'help()' for on-line help, or 869s 'help.start()' for an HTML browser interface to help. 869s Type 'q()' to quit R. 869s 869s > library("matrixStats") 869s > 869s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 869s > # Subsetted tests 869s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 869s > source("utils/validateIndicesFramework.R") 869s > for (mode in c("numeric", "integer")) { 869s + x <- runif(6, min = -6, max = 6) 869s + w <- runif(6, min = 0, max = 6) 869s + storage.mode(x) <- mode 869s + storage.mode(w) <- mode 869s + if (mode == "numeric") w[1] <- Inf 869s + 869s + for (idxs in index_cases) { 869s + validateIndicesTestVector_w(x, w, idxs, 869s + ftest = weightedMean, fsure = weighted.mean, 869s + na.rm = TRUE, refine = TRUE) 869s + validateIndicesTestVector_w(x, w, idxs, 869s + ftest = weightedMean, fsure = weighted.mean, 869s + na.rm = FALSE, refine = TRUE) 869s + } 869s + } 869s > 870s 870s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 870s Copyright (C) 2024 The R Foundation for Statistical Computing 870s Platform: arm-unknown-linux-gnueabihf (32-bit) 870s 870s R is free software and comes with ABSOLUTELY NO WARRANTY. 870s You are welcome to redistribute it under certain conditions. 870s Type 'license()' or 'licence()' for distribution details. 870s 870s R is a collaborative project with many contributors. 870s Type 'contributors()' for more information and 870s 'citation()' on how to cite R or R packages in publications. 870s 870s Type 'demo()' for some demos, 'help()' for on-line help, or 870s 'help.start()' for an HTML browser interface to help. 870s Type 'q()' to quit R. 870s 870s > library("matrixStats") 870s > 870s > x <- 1:5 870s > y <- weightedMedian(x) 870s > y <- weightedMedian(x, w = c(NA, Inf, NA, Inf, NA), na.rm = TRUE) 870s > print(y) 870s [1] 3 870s > 870s > y <- weightedMedian(x, w = c(NA, Inf, NA, Inf, NA), na.rm = FALSE) 870s > print(y) 870s [1] NA 870s > stopifnot(is.na(y)) 870s > 870s > x <- 1:10 870s > n <- length(x) 870s > 870s > y1 <- median(x) # 5.5 870s > y2 <- weightedMedian(x) # 5.5 870s > stopifnot(all.equal(y1, y2)) 870s > 870s > 870s > w <- rep(1, times = n) 870s > y1 <- weightedMedian(x, w) # 5.5 (default) 870s > y2a <- weightedMedian(x, ties = "weighted") # 5.5 (default) 870s > y2b <- weightedMedian(x, ties = "min") # 5 870s > y2c <- weightedMedian(x, ties = "max") # 6 870s > stopifnot(all.equal(y2a, y1)) 870s > 870s > y3 <- weightedMedian(x, w) # 5.5 (default) 870s > 870s > 870s > # Pull the median towards zero 870s > w[1] <- 5 870s > y1 <- weightedMedian(x, w) # 3.5 870s > y <- c(rep(0, times = w[1]), x[-1]) # Only possible for integer weights 870s > y2 <- median(y) # 3.5 870s > stopifnot(all.equal(y1, y2)) 870s > 870s > # Put even more weight on the zero 870s > w[1] <- 8.5 870s > y <- weightedMedian(x, w) # 2 870s > 870s > # All weight on the first value 870s > w[1] <- Inf 870s > y <- weightedMedian(x, w) # 1 870s > 870s > # All weight on the last value 870s > w[1] <- 1 870s > w[n] <- Inf 870s > y <- weightedMedian(x, w) # 10 870s > 870s > # All weights set to zero 870s > w <- rep(0, times = n) 870s > y <- weightedMedian(x, w) # NA 870s > 870s > x <- 1:4 870s > w <- rep(1, times = 4) 870s > for (mode in c("integer", "double")) { 870s + storage.mode(x) <- mode 870s + for (ties in c("weighted", "mean", "min", "max")) { 870s + cat(sprintf("ties = %s\n", ties)) 870s + y <- weightedMedian(x, w, ties = ties) 870s + } 870s + } 870s ties = weighted 870s ties = mean 870s ties = min 870s ties = max 870s ties = weighted 870s ties = mean 870s ties = min 870s ties = max 870s > 870s > set.seed(0x42) 870s > 870s > y <- weightedMedian(x = double(0L)) 870s > print(y) 870s [1] NA 870s > stopifnot(length(y) == 1L) 870s > stopifnot(is.na(y)) 870s > 870s > y <- weightedMedian(x = x[1]) 870s > print(y) 870s [1] 1 870s > stopifnot(length(y) == 1L) 870s > stopifnot(all.equal(y, x[1])) 870s > 870s > 870s > n <- 1e3 870s > x <- runif(n) 870s > w <- runif(n, min = 0, max = 1) 870s > for (mode in c("integer", "double")) { 870s + storage.mode(x) <- mode 870s + for (ties in c("weighted", "mean", "min", "max")) { 870s + y <- weightedMedian(x, w, ties = ties) 870s + cat(sprintf("mode = %s, ties = %s, result = %g\n", mode, ties, y)) 870s + } 870s + } 870s mode = integer, ties = weighted, result = 0 870s mode = integer, ties = mean, result = 0 870s mode = integer, ties = min, result = 0 870s mode = integer, ties = max, result = 0 870s mode = double, ties = weighted, result = 0 870s mode = double, ties = mean, result = 0 870s mode = double, ties = min, result = 0 870s mode = double, ties = max, result = 0 870s > 870s > 870s > # A large vector 870s > n <- 1e5 870s > x <- runif(n) 870s > w <- runif(n, min = 0, max = 1) 870s > y <- weightedMedian(x, w) 870s > 870s > y <- weightedMedian(x, w, ties = "min") 870s > 870s > 870s > # Single Number 870s > xs <- c(1, NA_integer_) 870s > ws <- c(1, NA_integer_) 870s > for (x in xs) { 870s + for (w in ws) { 870s + y <- weightedMedian(x = x, w = w) 870s + if (is.na(w)) z <- NA_real_ 870s + else z <- x[1] 870s + stopifnot(all.equal(y, z)) 870s + } 870s + } 870s > 870s > ## Logical 870s > x1 <- c(TRUE, FALSE, TRUE) 870s > w0 <- c(0, 0, 0) 870s > stopifnot(!is.finite(weightedMedian(x1, w0)), 870s + !is.infinite(weightedMedian(x1, w0))) 870s > 870s > w1 <- c(1, 1, 1) 870s > stopifnot(weightedMedian(x1, w1) == 1) 870s > 870s > w2 <- c(1, 2, 3) 870s > stopifnot(weightedMedian(x1, w2) == 1) 870s > 870s > ### NA 870s > stopifnot(is.na(weightedMedian(c(TRUE, FALSE, NA), 870s + c(1, 2, 3))), 870s + all.equal(weightedMedian(c(TRUE, FALSE, NA), 870s + c(1, 2, 3), 870s + na.rm = TRUE), 870s + weightedMedian(c(TRUE, FALSE), 870s + c(1, 2)))) 870s > ### Identical to as.integer() 870s > x <- rcauchy(100) 870s > w <- abs(rcauchy(100)) 870s > stopifnot(all.equal(weightedMedian(x > 0, w), 870s + weightedMedian(as.integer(x > 0), w))) 870s > 870s > 870s > 870s 870s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 870s Copyright (C) 2024 The R Foundation for Statistical Computing 870s Platform: arm-unknown-linux-gnueabihf (32-bit) 870s 870s R is free software and comes with ABSOLUTELY NO WARRANTY. 870s You are welcome to redistribute it under certain conditions. 870s Type 'license()' or 'licence()' for distribution details. 870s 870s R is a collaborative project with many contributors. 870s Type 'contributors()' for more information and 870s 'citation()' on how to cite R or R packages in publications. 870s 870s Type 'demo()' for some demos, 'help()' for on-line help, or 870s 'help.start()' for an HTML browser interface to help. 870s Type 'q()' to quit R. 870s 870s > library("matrixStats") 870s > 870s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 870s > # Subsetted tests 870s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 870s > source("utils/validateIndicesFramework.R") 870s > for (mode in c("numeric", "integer")) { 870s + x <- runif(6, min = -6, max = 6) 870s + w <- runif(6, min = 0, max = 6) 870s + storage.mode(x) <- mode 870s + storage.mode(w) <- mode 870s + if (mode == "numeric") w[1] <- Inf 870s + 870s + for (idxs in index_cases) { 870s + validateIndicesTestVector_w(x, w, idxs, 870s + ftest = weightedMedian, 870s + fsure = weightedMedian, 870s + na.rm = TRUE) 870s + validateIndicesTestVector_w(x, w, idxs, 870s + ftest = weightedMedian, 870s + fsure = weightedMedian, 870s + na.rm = FALSE) 870s + 870s + for (ties in c("weighted", "mean", "min", "max")) { 870s + validateIndicesTestVector_w(x, w, idxs, 870s + ftest = weightedMedian, 870s + fsure = weightedMedian, 870s + na.rm = TRUE, ties = ties) 870s + validateIndicesTestVector_w(x, w, idxs, 870s + ftest = weightedMedian, 870s + fsure = weightedMedian, 870s + na.rm = FALSE, ties = ties) 870s + } 870s + } 870s + } 871s > 871s 871s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 871s Copyright (C) 2024 The R Foundation for Statistical Computing 871s Platform: arm-unknown-linux-gnueabihf (32-bit) 871s 871s R is free software and comes with ABSOLUTELY NO WARRANTY. 871s You are welcome to redistribute it under certain conditions. 871s Type 'license()' or 'licence()' for distribution details. 871s 871s R is a collaborative project with many contributors. 871s Type 'contributors()' for more information and 871s 'citation()' on how to cite R or R packages in publications. 871s 871s Type 'demo()' for some demos, 'help()' for on-line help, or 871s 'help.start()' for an HTML browser interface to help. 871s Type 'q()' to quit R. 871s 871s > library("matrixStats") 871s *** weightedVar() ... 871s > 871s > weightedVar_R <- function(x, w) { 871s + mu <- weighted.mean(x, w = w) 871s + sum(w * (x - mu) ^ 2) / (sum(w) - 1) 871s + } 871s > 871s > 871s > n <- 10 871s > x <- as.double(1:n) 871s > 871s > message("*** weightedVar() ...") 871s > 871s > message("- Zero elements") 871s > m0 <- var(integer(0)) 871s > m1 <- weightedVar(integer(0), w = integer(0)) 871s - Zero elements 871s > str(list(m0 = m0, m1 = m1)) 871s List of 2 871s $ m0:- One elements 871s - Uniform weights (all w = 1) 871s num NA 871s $ m1: int NA 871s > stopifnot(all.equal(m1, m0)) 871s > 871s > 871s > message("- One elements") 871s > m0 <- var(1) 871s > m1 <- weightedVar(1) 871s > str(list(m0 = m0, m1 = m1)) 871s List of 2 871s $ m0: num NA 871s $ m1: num NA 871s > stopifnot(all.equal(m1, m0)) 871s > 871s > 871s > message("- Uniform weights (all w = 1)") 871s > m0 <- var(x) 871s > w <- rep(1, times = n) 871s > m1 <- weightedVar(x, w = w) 871s > str(list(m0 = m0, m1 = m1)) 871s List of 2 871s $ m0: num 9.17 871s $ m1: num 9.17 871s > stopifnot(all.equal(m1, m0)) 871s > 871s > 871s > message("- Uniform weights (all w = 3)") 871s > m0 <- var(rep(x, each = 3)) 871s > w <- rep(3, times = n) 871s > m1 <- weightedVar(x, w = w) 871s > str(list(m0 = m0, m1 = m1)) 871s List of 2 871s $ m0: num 8.53 871s $ m1: num 8.53 871s > stopifnot(all.equal(m1, m0)) 871s > 871s > 871s > message("- Uniform weights on the first five elements") 871s - Uniform weights (all w = 3) 871s - Uniform weights on the first five elements 871s > idxs <- 1:5 871s > m0 <- var(x[1:5]) 871s > w <- rep(0, times = n) 871s > w[idxs] <- 1 871s > m1 <- weightedVar(x, w = w) 871s > str(list(m0 = m0, m1 = m1)) 871s List of 2 871s $ m0: num 2.5 871s $ m1: num 2.5 871s > stopifnot(all.equal(m1, m0)) 871s > 871s > 871s > message("- Uniform weights on every second elements") 871s > idxs <- seq(from = 1, to = n, by = 2) 871s - Uniform weights on every second elements 871s > m0 <- var(x[idxs]) 871s > w <- rep(0, times = n) 871s > w[idxs] <- 1 871s > m1 <- weightedVar(x, w = w) 871s > str(list(m0 = m0, m1 = m1)) 871s List of 2 871s $ m0: num 10 871s $ m1: num 10 871s > stopifnot(all.equal(m1, m0)) 871s > 871s > 871s > message("- All weights are zero") 871s > idxs <- integer(0L) 871s > m0 <- var(x[idxs]) 871s > w <- rep(0, times = n) 871s > w[idxs] <- 1 871s > m1 <- weightedVar(x, w = w) 871s > str(list(m0 = m0, m1 = m1)) 871s List of 2 871s $ m0: num NA 871s $ m1:- All weights are zero 871s num NA 871s > stopifnot(all.equal(m1, m0)) 871s > 871s > message("- Infinite weight on first element") 871s > idxs <- 1L 871s > m0 <- var(x[idxs]) 871s > w <- rep(0, times = n) 871s > w[idxs] <- Inf 871s > m1 <- weightedVar(x, w = w) 871s > str(list(m0 = m0, m1 = m1)) 871s - Infinite weight on first element 871s List of 2 871s $ m0:- Missing-value weight on first element 871s num NA 871s $ m1: num NA 871s > stopifnot(all.equal(m1, m0)) 871s > 871s > message("- Missing-value weight on first element") 871s > idxs <- 1L 871s > w <- rep(1, times = n) 871s > w[idxs] <- NA_real_ 871s > m1 <- weightedVar(x, w = w) 871s > str(list(m1 = m1)) 871s List of 1 871s $ m1: num NA 871s > stopifnot(identical(m1, NA_real_)) 871s > 871s > 871s > message("- Frequency weights") 871s > 871s > ## From https://en.wikipedia.org/wiki/Weighted_arithmetic_mean 871s > y <- c(2, 2, 4, 5, 5, 5) 871s > x <- unique(y) 871s > w <- table(y) 871s > stopifnot(names(w) == x) 871s > 871s > m0 <- weightedVar(x, w = w) 871s > m1 <- var(y) 871s > stopifnot(all.equal(m1, m0)) 871s > m2 <- weightedVar(x, w = w) 871s > str(list(m0 = m0, m1 = m1, m2 = m2)) 871s List of 3 871s $ m0: num 2.17 871s $ m1: num 2.17 871s $ m2: num 2.17 871s > stopifnot(all.equal(m2, m0)) 871s > 871s > ## From https://github.com/HenrikBengtsson/matrixStats/issues/72 871s > large <- c(21, 8, 26, 1, 15, 33, 12, 25, 0, 84) 871s > years <- c(41706, 9301, 33678, 3082, 27040, 44188, 10049, 30591, 2275, 109831) 871s > 871s > m0 <- weightedVar(large, w = years) 871s > m1 <- weightedVar(large, w = years) 871s > str(list(m0 = m0, m1 = m1)) 871s List of 2 871s $ m0: num 899 871s $ m1: num 899 871s > stopifnot(all.equal(m1, m0)) 871s > 871s > message("*** weightedVar() ... DONE") 871s > 871s - Frequency weights 871s *** weightedVar() ... DONE 871s 871s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 871s Copyright (C) 2024 The R Foundation for Statistical Computing 871s Platform: arm-unknown-linux-gnueabihf (32-bit) 871s 871s R is free software and comes with ABSOLUTELY NO WARRANTY. 871s You are welcome to redistribute it under certain conditions. 871s Type 'license()' or 'licence()' for distribution details. 871s 871s R is a collaborative project with many contributors. 871s Type 'contributors()' for more information and 871s 'citation()' on how to cite R or R packages in publications. 871s 871s Type 'demo()' for some demos, 'help()' for on-line help, or 871s 'help.start()' for an HTML browser interface to help. 871s Type 'q()' to quit R. 871s 872s > library("matrixStats") 872s > 872s > fcns <- list( 872s + weightedVar = weightedVar, 872s + weightedSd = weightedSd, 872s + weightedMad = weightedMad 872s + ) 872s > 872s > for (name in names(fcns)) { 872s + cat(sprintf("%s()...\n", name)) 872s + fcn <- fcns[[name]] 872s + 872s + for (mode in c("integer", "double")) { 872s + cat("mode: ", mode, "\n", sep = "") 872s + n <- 15L 872s + x <- runif(n, min = -5, max = 5) 872s + storage.mode(x) <- mode 872s + str(x) 872s + 872s + for (add_na in c(FALSE, TRUE)) { 872s + cat("add_na: ", add_na, "\n", sep = "") 872s + if (add_na) { 872s + x[c(5, 7)] <- NA 872s + } 872s + str(x) 872s + 872s + for (na.rm in c(FALSE, TRUE)) { 872s + cat("na.rm: ", na.rm, "\n", sep = "") 872s + 872s + cat("Weights are not specified (all are 1)\n") 872s + m1 <- fcn(x, na.rm = na.rm) 872s + str(list(m1 = m1)) 872s + 872s + cat("All weights are 1\n") 872s + w <- rep(1, times = n) 872s + m1 <- fcn(x, w, na.rm = na.rm) 872s + str(list(m1 = m1)) 872s + 872s + cat("First weight is 5\n") 872s + # Pull the mean towards zero 872s + w[1] <- 5 872s + str(w) 872s + m1 <- fcn(x, w, na.rm = na.rm) 872s + str(list(m1 = m1)) 872s + 872s + cat("All weights are 0\n") 872s + # All weights set to zero 872s + w <- rep(0, times = n) 872s + m1 <- fcn(x, w, na.rm = na.rm) 872s + str(list(m1 = m1)) 872s + 872s + cat("First weight is 8.5\n") 872s + # Put even more weight on the zero 872s + w[1] <- 8.5 872s + m1 <- fcn(x, w, na.rm = na.rm) 872s + str(list(m1 = m1)) 872s + 872s + cat("First weight is Inf\n") 872s + # All weight on the first value 872s + w[1] <- Inf 872s + m1 <- fcn(x, w, na.rm = na.rm) 872s + str(list(m1 = m1)) 872s + 872s + cat("Last weight is Inf\n") 872s + # All weight on the last value 872s + w[1] <- 1 872s + w[n] <- Inf 872s + m1 <- fcn(x, w, na.rm = na.rm) 872s + str(list(m1 = m1)) 872s + 872s + cat("Last weight is NA\n") 872s + # All weight on the last value 872s + w[1] <- 1 872s + w[n] <- NA_real_ 872s + m1 <- fcn(x, w, na.rm = na.rm) 872s + str(list(m1 = m1)) 872s + } # for (na.rm ...) 872s + } # for (add_na ...) 872s + } # for (mode ...) 872s + 872s + cat(sprintf("%s()...DONE\n", name)) 872s + } # for (name ...) 872s weightedVar()... 872s mode: integer 872s int [1:15] -3 0 -4 0 0 1 2 1 1 2 ... 872s add_na: FALSE 872s int [1:15] -3 0 -4 0 0 1 2 1 1 2 ... 872s na.rm: FALSE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: num 3.84 872s All weights are 1 872s List of 1 872s $ m1: num 3.84 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: num 4.05 872s All weights are 0 872s List of 1 872s $ m1: int NA 872s First weight is 8.5 872s List of 1 872s $ m1: int NA 872s First weight is Inf 872s List of 1 872s $ m1: int NA 872s Last weight is Inf 872s List of 1 872s $ m1: int NA 872s Last weight is NA 872s List of 1 872s $ m1: int NA 872s na.rm: TRUE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: num 3.84 872s All weights are 1 872s List of 1 872s $ m1: num 3.84 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: num 4.05 872s All weights are 0 872s List of 1 872s $ m1: int NA 872s First weight is 8.5 872s List of 1 872s $ m1: int NA 872s First weight is Inf 872s List of 1 872s $ m1: int NA 872s Last weight is Inf 872s List of 1 872s $ m1: int NA 872s Last weight is NA 872s List of 1 872s $ m1: int NA 872s add_na: TRUE 872s int [1:15] -3 0 -4 0 NA 1 NA 1 1 2 ... 872s na.rm: FALSE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: int NA 872s All weights are 1 872s List of 1 872s $ m1: int NA 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: int NA 872s All weights are 0 872s List of 1 872s $ m1: int NA 872s First weight is 8.5 872s List of 1 872s $ m1: int NA 872s First weight is Inf 872s List of 1 872s $ m1: int NA 872s Last weight is Inf 872s List of 1 872s $ m1: int NA 872s Last weight is NA 872s List of 1 872s $ m1: int NA 872s na.rm: TRUE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: num 3.86 872s All weights are 1 872s List of 1 872s $ m1: num 3.86 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: num 3.85 872s All weights are 0 872s List of 1 872s $ m1: int NA 872s First weight is 8.5 872s List of 1 872s $ m1: int NA 872s First weight is Inf 872s List of 1 872s $ m1: int NA 872s Last weight is Inf 872s List of 1 872s $ m1: int NA 872s Last weight is NA 872s List of 1 872s $ m1: int NA 872s mode: double 872s num [1:15] 3.88 -4.52 2.84 -0.9 1.29 ... 872s add_na: FALSE 872s num [1:15] 3.88 -4.52 2.84 -0.9 1.29 ... 872s na.rm: FALSE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: num 8.93 872s All weights are 1 872s List of 1 872s $ m1: num 8.93 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: num 9.48 872s All weights are 0 872s List of 1 872s $ m1: num NA 872s First weight is 8.5 872s List of 1 872s $ m1: num NA 872s First weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is NA 872s List of 1 872s $ m1: num NA 872s na.rm: TRUE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: num 8.93 872s All weights are 1 872s List of 1 872s $ m1: num 8.93 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: num 9.48 872s All weights are 0 872s List of 1 872s $ m1: num NA 872s First weight is 8.5 872s List of 1 872s $ m1: num NA 872s First weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is NA 872s List of 1 872s $ m1: num NA 872s add_na: TRUE 872s num [1:15] 3.88 -4.52 2.84 -0.9 NA ... 872s na.rm: FALSE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: num NA 872s All weights are 1 872s List of 1 872s $ m1: num NA 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: num NA 872s All weights are 0 872s List of 1 872s $ m1: num NA 872s First weight is 8.5 872s List of 1 872s $ m1: num NA 872s First weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is NA 872s List of 1 872s $ m1: num NA 872s na.rm: TRUE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: num 9.45 872s All weights are 1 872s List of 1 872s $ m1: num 9.45 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: num 10.3 872s All weights are 0 872s List of 1 872s $ m1: num NA 872s First weight is 8.5 872s List of 1 872s $ m1: num NA 872s First weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is NA 872s List of 1 872s $ m1: num NA 872s weightedVar()...DONE 872s weightedSd()... 872s mode: integer 872s int [1:15] 2 -1 4 -4 4 3 4 -1 -3 -4 ... 872s add_na: FALSE 872s int [1:15] 2 -1 4 -4 4 3 4 -1 -3 -4 ... 872s na.rm: FALSE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: num 2.91 872s All weights are 1 872s List of 1 872s $ m1: num 2.91 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: num 2.61 872s All weights are 0 872s List of 1 872s $ m1: num NA 872s First weight is 8.5 872s List of 1 872s $ m1: num NA 872s First weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is NA 872s List of 1 872s $ m1: num NA 872s na.rm: TRUE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: num 2.91 872s All weights are 1 872s List of 1 872s $ m1: num 2.91 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: num 2.61 872s All weights are 0 872s List of 1 872s $ m1: num NA 872s First weight is 8.5 872s List of 1 872s $ m1: num NA 872s First weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is NA 872s List of 1 872s $ m1: num NA 872s add_na: TRUE 872s int [1:15] 2 -1 4 -4 NA 3 NA -1 -3 -4 ... 872s na.rm: FALSE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: num NA 872s All weights are 1 872s List of 1 872s $ m1: num NA 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: num NA 872s All weights are 0 872s List of 1 872s $ m1: num NA 872s First weight is 8.5 872s List of 1 872s $ m1: num NA 872s First weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is NA 872s List of 1 872s $ m1: num NA 872s na.rm: TRUE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: num 2.81 872s All weights are 1 872s List of 1 872s $ m1: num 2.81 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: num 2.54 872s All weights are 0 872s List of 1 872s $ m1: num NA 872s First weight is 8.5 872s List of 1 872s $ m1: num NA 872s First weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is NA 872s List of 1 872s $ m1: num NA 872s mode: double 872s num [1:15] 1.5 -3.56 -2.87 4.97 -2.34 ... 872s add_na: FALSE 872s num [1:15] 1.5 -3.56 -2.87 4.97 -2.34 ... 872s na.rm: FALSE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: num 3.18 872s All weights are 1 872s List of 1 872s $ m1: num 3.18 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: num 2.88 872s All weights are 0 872s List of 1 872s $ m1: num NA 872s First weight is 8.5 872s List of 1 872s $ m1: num NA 872s First weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is NA 872s List of 1 872s $ m1: num NA 872s na.rm: TRUE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: num 3.18 872s All weights are 1 872s List of 1 872s $ m1: num 3.18 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: num 2.88 872s All weights are 0 872s List of 1 872s $ m1: num NA 872s First weight is 8.5 872s List of 1 872s $ m1: num NA 872s First weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is NA 872s List of 1 872s $ m1: num NA 872s add_na: TRUE 872s num [1:15] 1.5 -3.56 -2.87 4.97 NA ... 872s na.rm: FALSE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: num NA 872s All weights are 1 872s List of 1 872s $ m1: num NA 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: num NA 872s All weights are 0 872s List of 1 872s $ m1: num NA 872s First weight is 8.5 872s List of 1 872s $ m1: num NA 872s First weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is NA 872s List of 1 872s $ m1: num NA 872s na.rm: TRUE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: num 3.07 872s All weights are 1 872s List of 1 872s $ m1: num 3.07 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: num 2.7 872s All weights are 0 872s List of 1 872s $ m1: num NA 872s First weight is 8.5 872s List of 1 872s $ m1: num NA 872s First weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is Inf 872s List of 1 872s $ m1: num NA 872s Last weight is NA 872s List of 1 872s $ m1: num NA 872s weightedSd()...DONE 872s weightedMad()... 872s mode: integer 872s int [1:15] 3 1 1 -4 2 -2 1 1 3 -3 ... 872s add_na: FALSE 872s int [1:15] 3 1 1 -4 2 -2 1 1 3 -3 ... 872s na.rm: FALSE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: num 2.97 872s All weights are 1 872s List of 1 872s $ m1: num 2.97 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: num 2.97 872s All weights are 0 872s List of 1 872s $ m1: int NA 872s First weight is 8.5 872s List of 1 872s $ m1: int 0 872s First weight is Inf 872s List of 1 872s $ m1: int 0 872s Last weight is Inf 872s List of 1 872s $ m1: int 0 872s Last weight is NA 872s List of 1 872s $ m1: int NA 872s na.rm: TRUE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: num 2.97 872s All weights are 1 872s List of 1 872s $ m1: num 2.97 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: num 2.97 872s All weights are 0 872s List of 1 872s $ m1: int NA 872s First weight is 8.5 872s List of 1 872s $ m1: int 0 872s First weight is Inf 872s List of 1 872s $ m1: int 0 872s Last weight is Inf 872s List of 1 872s $ m1: int 0 872s Last weight is NA 872s List of 1 872s $ m1: int NA 872s add_na: TRUE 872s int [1:15] 3 1 1 -4 NA -2 NA 1 3 -3 ... 872s na.rm: FALSE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: num NA 872s All weights are 1 872s List of 1 872s $ m1: int NA 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: int NA 872s All weights are 0 872s List of 1 872s $ m1: int NA 872s First weight is 8.5 872s List of 1 872s $ m1: int 0 872s First weight is Inf 872s List of 1 872s $ m1: int 0 872s Last weight is Inf 872s List of 1 872s $ m1: int 0 872s Last weight is NA 872s List of 1 872s $ m1: int NA 872s na.rm: TRUE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: num 2.97 872s All weights are 1 872s List of 1 872s $ m1: num 2.97 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: num 2.97 872s All weights are 0 872s List of 1 872s $ m1: int NA 872s First weight is 8.5 872s List of 1 872s $ m1: int 0 872s First weight is Inf 872s List of 1 872s $ m1: int 0 872s Last weight is Inf 872s List of 1 872s $ m1: int 0 872s Last weight is NA 872s List of 1 872s $ m1: int NA 872s mode: double 872s num [1:15] 1.846 2.825 -3.917 -4.539 0.774 ... 872s add_na: FALSE 872s num [1:15] 1.846 2.825 -3.917 -4.539 0.774 ... 872s na.rm: FALSE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: num 3.49 872s All weights are 1 872s List of 1 872s $ m1: num 3.49 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: num 3.04 872s All weights are 0 872s List of 1 872s $ m1: num NA 872s First weight is 8.5 872s List of 1 872s $ m1: num 0 872s First weight is Inf 872s List of 1 872s $ m1: num 0 872s Last weight is Inf 872s List of 1 872s $ m1: num 0 872s Last weight is NA 872s List of 1 872s $ m1: num NA 872s na.rm: TRUE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: num 3.49 872s All weights are 1 872s List of 1 872s $ m1: num 3.49 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: num 3.04 872s All weights are 0 872s List of 1 872s $ m1: num NA 872s First weight is 8.5 872s List of 1 872s $ m1: num 0 872s First weight is Inf 872s List of 1 872s $ m1: num 0 872s Last weight is Inf 872s List of 1 872s $ m1: num 0 872s Last weight is NA 872s List of 1 872s $ m1: num NA 872s add_na: TRUE 872s num [1:15] 1.85 2.83 -3.92 -4.54 NA ... 872s na.rm: FALSE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: num NA 872s All weights are 1 872s List of 1 872s $ m1: num NA 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: num NA 872s All weights are 0 872s List of 1 872s $ m1: num NA 872s First weight is 8.5 872s List of 1 872s $ m1: num 0 872s First weight is Inf 872s List of 1 872s $ m1: num 0 872s Last weight is Inf 872s List of 1 872s $ m1: num 0 872s Last weight is NA 872s List of 1 872s $ m1: num NA 872s na.rm: TRUE 872s Weights are not specified (all are 1) 872s List of 1 872s $ m1: num 3.76 872s All weights are 1 872s List of 1 872s $ m1: num 3.76 872s First weight is 5 872s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 872s List of 1 872s $ m1: num 2.75 872s All weights are 0 872s List of 1 872s $ m1: num NA 872s First weight is 8.5 872s List of 1 872s $ m1: num 0 872s First weight is Inf 872s List of 1 872s $ m1: num 0 872s Last weight is Inf 872s List of 1 872s $ m1: num 0 872s Last weight is NA 872s List of 1 872s $ m1: num NA 872s weightedMad()...DONE 872s > 872s 872s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 872s Copyright (C) 2024 The R Foundation for Statistical Computing 872s Platform: arm-unknown-linux-gnueabihf (32-bit) 872s 872s R is free software and comes with ABSOLUTELY NO WARRANTY. 872s You are welcome to redistribute it under certain conditions. 872s Type 'license()' or 'licence()' for distribution details. 872s 872s R is a collaborative project with many contributors. 872s Type 'contributors()' for more information and 872s 'citation()' on how to cite R or R packages in publications. 872s 872s Type 'demo()' for some demos, 'help()' for on-line help, or 872s 'help.start()' for an HTML browser interface to help. 872s Type 'q()' to quit R. 872s 873s > library("matrixStats") 873s > 873s > fcns <- list( 873s + weightedVar = weightedVar, 873s + weightedSd = weightedSd, 873s + weightedMad = weightedMad 873s + ) 873s > 873s > 873s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 873s > # Subsetted tests 873s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 873s > source("utils/validateIndicesFramework.R") 873s > for (name in names(fcns)) { 873s + cat(sprintf("subsetted tests on %s()...\n", name)) 873s + fcn <- fcns[[name]] 873s + 873s + for (mode in c("numeric", "integer")) { 873s + x <- runif(6, min = -6, max = 6) 873s + w <- runif(6, min = 0, max = 6) 873s + storage.mode(x) <- mode 873s + storage.mode(w) <- mode 873s + if (mode == "numeric") w[1] <- Inf 873s + 873s + for (idxs in index_cases) { 873s + validateIndicesTestVector_w(x, w, idxs, 873s + ftest = fcn, fsure = fcn, 873s + na.rm = TRUE) 873s + validateIndicesTestVector_w(x, w, idxs, 873s + ftest = fcn, fsure = fcn, 873s + na.rm = FALSE) 873s + } 873s + } 873s + cat(sprintf("%s()...DONE\n", name)) 873s + } 873s subsetted tests on weightedVar()... 873s weightedVar()...DONE 873s subsetted tests on weightedSd()... 873s weightedSd()...DONE 873s subsetted tests on weightedMad()... 873s weightedMad()...DONE 873s > 873s 873s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 873s Copyright (C) 2024 The R Foundation for Statistical Computing 873s Platform: arm-unknown-linux-gnueabihf (32-bit) 873s 873s R is free software and comes with ABSOLUTELY NO WARRANTY. 873s You are welcome to redistribute it under certain conditions. 873s Type 'license()' or 'licence()' for distribution details. 873s 873s R is a collaborative project with many contributors. 873s Type 'contributors()' for more information and 873s 'citation()' on how to cite R or R packages in publications. 873s 873s Type 'demo()' for some demos, 'help()' for on-line help, or 873s 'help.start()' for an HTML browser interface to help. 873s Type 'q()' to quit R. 873s 873s > library("matrixStats") 873s > 873s > x_OP_y_R <- function(x, y, OP, na.rm = FALSE) { 873s + if (na.rm) { 873s + xnok <- is.na(x) 873s + ynok <- is.na(y) 873s + anok <- xnok & ynok 873s + unit <- switch(OP, 873s + "+" = 0, 873s + "-" = NA_real_, 873s + "*" = 1, 873s + "/" = NA_real_, 873s + stop("Unknown 'OP' operator: ", OP) 873s + ) 873s + x[xnok] <- unit 873s + y[ynok] <- unit 873s + } 873s + 873s + ans <- switch(OP, 873s + "+" = x + y, 873s + "-" = x - y, 873s + "*" = x * y, 873s + "/" = x / y, 873s + stop("Unknown 'OP' operator: ", OP) 873s + ) 873s + 873s + if (na.rm) { 873s + ans[anok] <- NA_real_ 873s + } 873s + 873s + ans 873s + } # x_OP_y_R() 873s > 873s > 873s > 873s > t_tx_OP_y_R <- function(x, y, OP, na.rm = FALSE) { 873s + t(x_OP_y_R(x = t(x), y = y, OP = OP, na.rm = na.rm)) 873s + } 873s > 873s > 873s > 873s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 873s > # No missing values 873s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 873s > x <- matrix(1:16, nrow = 4, ncol = 4) 873s > y <- 1:nrow(x) 873s > storage.mode(y) <- storage.mode(x) 873s > 873s > for (OP in c("+", "-", "*", "/")) { 873s + for (na.rm in c(FALSE, TRUE)) { 873s + cat(sprintf("OP = '%s', na.rm = %s\n", OP, na.rm)) 873s + 873s + a0 <- x_OP_y_R(x, y, OP, na.rm = na.rm) 873s + a1 <- x_OP_y(x, y, OP, na.rm = na.rm) 873s + str(a1) 873s + stopifnot(all.equal(a1, a0)) 873s + 873s + b0 <- t_tx_OP_y_R(x, y, OP, na.rm = na.rm) 873s + b1 <- t_tx_OP_y(x, y, OP, na.rm = na.rm) 873s + str(b1) 873s + stopifnot(all.equal(b1, b0)) 873s + } 873s + } 873s OP = '+', na.rm = FALSE 873s int [1:4, 1:4] 2 4 6 8 6 8 10 12 10 12 ... 873s int [1:4, 1:4] 2 3 4 5 7 8 9 10 12 13 ... 873s OP = '+', na.rm = TRUE 873s int [1:4, 1:4] 2 4 6 8 6 8 10 12 10 12 ... 873s int [1:4, 1:4] 2 3 4 5 7 8 9 10 12 13 ... 873s OP = '-', na.rm = FALSE 873s int [1:4, 1:4] 0 0 0 0 4 4 4 4 8 8 ... 873s int [1:4, 1:4] 0 1 2 3 3 4 5 6 6 7 ... 873s OP = '-', na.rm = TRUE 873s int [1:4, 1:4] 0 0 0 0 4 4 4 4 8 8 ... 873s int [1:4, 1:4] 0 1 2 3 3 4 5 6 6 7 ... 873s OP = '*', na.rm = FALSE 873s int [1:4, 1:4] 1 4 9 16 5 12 21 32 9 20 ... 873s int [1:4, 1:4] 1 2 3 4 10 12 14 16 27 30 ... 873s OP = '*', na.rm = TRUE 873s int [1:4, 1:4] 1 4 9 16 5 12 21 32 9 20 ... 873s int [1:4, 1:4] 1 2 3 4 10 12 14 16 27 30 ... 873s OP = '/', na.rm = FALSE 873s num [1:4, 1:4] 1 1 1 1 5 ... 873s num [1:4, 1:4] 1 2 3 4 2.5 ... 873s OP = '/', na.rm = TRUE 873s num [1:4, 1:4] 1 1 1 1 5 ... 873s num [1:4, 1:4] 1 2 3 4 2.5 ... 873s > 873s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 873s > # Missing values in x, y, or both. 873s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 873s > for (which in c("x", "y", "both")) { 873s + x <- matrix(1:16, nrow = 4, ncol = 4) 873s + y <- 1:nrow(x) 873s + storage.mode(y) <- storage.mode(x) 873s + 873s + if (which == "x") { 873s + x[3:6] <- NA_real_ 873s + } else if (which == "y") { 873s + y[c(1, 3)] <- NA_real_ 873s + } else if (which == "both") { 873s + x[3:6] <- NA_real_ 873s + y[c(1, 3)] <- NA_real_ 873s + } 873s + 873s + for (OP in c("+", "-", "*", "/")) { 873s + for (na.rm in c(FALSE, TRUE)) { 873s + cat(sprintf("OP = '%s', na.rm = %s\n", OP, na.rm)) 873s + a0 <- x_OP_y_R(x, y, OP, na.rm = na.rm) 873s + a1 <- x_OP_y(x, y, OP, na.rm = na.rm) 873s + str(a1) 873s + stopifnot(all.equal(a1, a0)) 873s + 873s + b0 <- t_tx_OP_y_R(x, y, OP, na.rm = na.rm) 873s + b1 <- t_tx_OP_y(x, y, OP, na.rm = na.rm) 873s + str(b1) 873s + stopifnot(all.equal(b1, b0)) 873s + } 873s + } 873s + } 873s OP = '+', na.rm = FALSE 873s num [1:4, 1:4] 2 4 NA NA NA NA 10 12 10 12 ... 873s num [1:4, 1:4] 2 3 NA NA NA NA 9 10 12 13 ... 873s OP = '+', na.rm = TRUE 873s num [1:4, 1:4] 2 4 3 4 1 2 10 12 10 12 ... 873s num [1:4, 1:4] 2 3 1 1 2 2 9 10 12 13 ... 873s OP = '-', na.rm = FALSE 873s num [1:4, 1:4] 0 0 NA NA NA NA 4 4 8 8 ... 873s num [1:4, 1:4] 0 1 NA NA NA NA 5 6 6 7 ... 873s OP = '-', na.rm = TRUE 873s num [1:4, 1:4] 0 0 NA NA NA NA 4 4 8 8 ... 873s num [1:4, 1:4] 0 1 NA NA NA NA 5 6 6 7 ... 873s OP = '*', na.rm = FALSE 873s num [1:4, 1:4] 1 4 NA NA NA NA 21 32 9 20 ... 873s num [1:4, 1:4] 1 2 NA NA NA NA 14 16 27 30 ... 873s OP = '*', na.rm = TRUE 873s num [1:4, 1:4] 1 4 3 4 1 2 21 32 9 20 ... 873s num [1:4, 1:4] 1 2 1 1 2 2 14 16 27 30 ... 873s OP = '/', na.rm = FALSE 873s num [1:4, 1:4] 1 1 NA NA NA ... 873s num [1:4, 1:4] 1 2 NA NA NA ... 873s OP = '/', na.rm = TRUE 873s num [1:4, 1:4] 1 1 NA NA NA ... 873s num [1:4, 1:4] 1 2 NA NA NA ... 873s OP = '+', na.rm = FALSE 873s num [1:4, 1:4] NA 4 NA 8 NA 8 NA 12 NA 12 ... 873s num [1:4, 1:4] NA NA NA NA 7 8 9 10 NA NA ... 873s OP = '+', na.rm = TRUE 873s num [1:4, 1:4] 1 4 3 8 5 8 7 12 9 12 ... 873s num [1:4, 1:4] 1 2 3 4 7 8 9 10 9 10 ... 873s OP = '-', na.rm = FALSE 873s num [1:4, 1:4] NA 0 NA 0 NA 4 NA 4 NA 8 ... 873s num [1:4, 1:4] NA NA NA NA 3 4 5 6 NA NA ... 873s OP = '-', na.rm = TRUE 873s num [1:4, 1:4] NA 0 NA 0 NA 4 NA 4 NA 8 ... 873s num [1:4, 1:4] NA NA NA NA 3 4 5 6 NA NA ... 873s OP = '*', na.rm = FALSE 873s num [1:4, 1:4] NA 4 NA 16 NA 12 NA 32 NA 20 ... 873s num [1:4, 1:4] NA NA NA NA 10 12 14 16 NA NA ... 873s OP = '*', na.rm = TRUE 873s num [1:4, 1:4] 1 4 3 16 5 12 7 32 9 20 ... 873s num [1:4, 1:4] 1 2 3 4 10 12 14 16 9 10 ... 873s OP = '/', na.rm = FALSE 873s num [1:4, 1:4] NA 1 NA 1 NA 3 NA 2 NA 5 ... 874s num [1:4, 1:4] NA NA NA NA 2.5 3 3.5 4 NA NA ... 874s OP = '/', na.rm = TRUE 874s num [1:4, 1:4] NA 1 NA 1 NA 3 NA 2 NA 5 ... 874s num [1:4, 1:4] NA NA NA NA 2.5 3 3.5 4 NA NA ... 874s OP = '+', na.rm = FALSE 874s num [1:4, 1:4] NA 4 NA NA NA NA NA 12 NA 12 ... 874s num [1:4, 1:4] NA NA NA NA NA NA 9 10 NA NA ... 874s OP = '+', na.rm = TRUE 874s num [1:4, 1:4] 1 4 NA 4 NA 2 7 12 9 12 ... 874s num [1:4, 1:4] 1 2 NA NA 2 2 9 10 9 10 ... 874s OP = '-', na.rm = FALSE 874s num [1:4, 1:4] NA 0 NA NA NA NA NA 4 NA 8 ... 874s num [1:4, 1:4] NA NA NA NA NA NA 5 6 NA NA ... 874s OP = '-', na.rm = TRUE 874s num [1:4, 1:4] NA 0 NA NA NA NA NA 4 NA 8 ... 874s num [1:4, 1:4] NA NA NA NA NA NA 5 6 NA NA ... 874s OP = '*', na.rm = FALSE 874s num [1:4, 1:4] NA 4 NA NA NA NA NA 32 NA 20 ... 874s num [1:4, 1:4] NA NA NA NA NA NA 14 16 NA NA ... 874s OP = '*', na.rm = TRUE 874s num [1:4, 1:4] 1 4 NA 4 NA 2 7 32 9 20 ... 874s num [1:4, 1:4] 1 2 NA NA 2 2 14 16 9 10 ... 874s OP = '/', na.rm = FALSE 874s num [1:4, 1:4] NA 1 NA NA NA NA NA 2 NA 5 ... 874s num [1:4, 1:4] NA NA NA NA NA NA 3.5 4 NA NA ... 874s OP = '/', na.rm = TRUE 874s num [1:4, 1:4] NA 1 NA NA NA NA NA 2 NA 5 ... 874s num [1:4, 1:4] NA NA NA NA NA NA 3.5 4 NA NA ... 874s > 874s > 874s > 874s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 874s > # Length differences 874s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 874s > x <- matrix(1:8, nrow = 2, ncol = 4) 874s > y <- 1:ncol(x) 874s > storage.mode(y) <- storage.mode(x) 874s > 874s > for (OP in c("+", "-", "*", "/")) { 874s + for (na.rm in c(FALSE, TRUE)) { 874s + cat(sprintf("OP = '%s', na.rm = %s\n", OP, na.rm)) 874s + 874s + a0 <- x_OP_y_R(x, y, OP, na.rm = na.rm) 874s + a1 <- x_OP_y(x, y, OP, na.rm = na.rm) 874s + str(a1) 874s + stopifnot(all.equal(a1, a0)) 874s + 874s + b0 <- t_tx_OP_y_R(x, y, OP, na.rm = na.rm) 874s + b1 <- t_tx_OP_y(x, y, OP, na.rm = na.rm) 874s + str(b1) 874s + stopifnot(all.equal(b1, b0)) 874s + } 874s + } 874s OP = '+', na.rm = FALSE 874s int [1:2, 1:4] 2 4 6 8 6 8 10 12 874s int [1:2, 1:4] 2 3 5 6 8 9 11 12 874s OP = '+', na.rm = TRUE 874s int [1:2, 1:4] 2 4 6 8 6 8 10 12 874s int [1:2, 1:4] 2 3 5 6 8 9 11 12 874s OP = '-', na.rm = FALSE 874s int [1:2, 1:4] 0 0 0 0 4 4 4 4 874s int [1:2, 1:4] 0 1 1 2 2 3 3 4 874s OP = '-', na.rm = TRUE 874s int [1:2, 1:4] 0 0 0 0 4 4 4 4 874s int [1:2, 1:4] 0 1 1 2 2 3 3 4 874s OP = '*', na.rm = FALSE 874s int [1:2, 1:4] 1 4 9 16 5 12 21 32 874s int [1:2, 1:4] 1 2 6 8 15 18 28 32 874s OP = '*', na.rm = TRUE 874s int [1:2, 1:4] 1 4 9 16 5 12 21 32 874s int [1:2, 1:4] 1 2 6 8 15 18 28 32 874s OP = '/', na.rm = FALSE 874s num [1:2, 1:4] 1 1 1 1 5 ... 874s num [1:2, 1:4] 1 2 1.5 2 1.67 ... 874s OP = '/', na.rm = TRUE 874s num [1:2, 1:4] 1 1 1 1 5 ... 874s num [1:2, 1:4] 1 2 1.5 2 1.67 ... 874s > 874s > 874s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 874s > # All missing values 874s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 874s > xs <- list( 874s + A = matrix(1:2, nrow = 2, ncol = 2), 874s + B = matrix(NA_integer_, nrow = 2, ncol = 2) 874s + ) 874s > ys <- list( 874s + A = 1L, 874s + B = NA_integer_ 874s + ) 874s > 874s > for (x in xs) { 874s + for (y in ys) { 874s + for (mode in c("logical", "integer", "double")) { 874s + storage.mode(x) <- mode 874s + storage.mode(y) <- mode 874s + str(list(x = x, y = y)) 874s + 874s + for (OP in c("+", "-", "*", "/")) { 874s + for (na.rm in c(FALSE, TRUE)) { 874s + cat(sprintf("mode = '%s', OP = '%s', na.rm = %s\n", mode, OP, na.rm)) 874s + suppressWarnings({ 874s + z0 <- x_OP_y_R(x, y, OP, na.rm = na.rm) 874s + z <- x_OP_y(x, y, OP, na.rm = na.rm) 874s + }) 874s + str(z) 874s + stopifnot(all.equal(z, z0)) 874s + } 874s + } 874s + } # for (mode ...) 874s + } # for (y ...) 874s + } # for (x ...) 874s List of 2 874s $ x: logi [1:2, 1:2] TRUE TRUE TRUE TRUE 874s $ y: logi TRUE 874s mode = 'logical', OP = '+', na.rm = FALSE 874s int [1:2, 1:2] 2 2 2 2 874s mode = 'logical', OP = '+', na.rm = TRUE 874s int [1:2, 1:2] 2 2 2 2 874s mode = 'logical', OP = '-', na.rm = FALSE 874s int [1:2, 1:2] 0 0 0 0 874s mode = 'logical', OP = '-', na.rm = TRUE 874s int [1:2, 1:2] 0 0 0 0 874s mode = 'logical', OP = '*', na.rm = FALSE 874s int [1:2, 1:2] 1 1 1 1 874s mode = 'logical', OP = '*', na.rm = TRUE 874s int [1:2, 1:2] 1 1 1 1 874s mode = 'logical', OP = '/', na.rm = FALSE 874s num [1:2, 1:2] 1 1 1 1 874s mode = 'logical', OP = '/', na.rm = TRUE 874s num [1:2, 1:2] 1 1 1 1 874s List of 2 874s $ x: int [1:2, 1:2] 1 1 1 1 874s $ y: int 1 874s mode = 'integer', OP = '+', na.rm = FALSE 874s int [1:2, 1:2] 2 2 2 2 874s mode = 'integer', OP = '+', na.rm = TRUE 874s int [1:2, 1:2] 2 2 2 2 874s mode = 'integer', OP = '-', na.rm = FALSE 874s int [1:2, 1:2] 0 0 0 0 874s mode = 'integer', OP = '-', na.rm = TRUE 874s int [1:2, 1:2] 0 0 0 0 874s mode = 'integer', OP = '*', na.rm = FALSE 874s int [1:2, 1:2] 1 1 1 1 874s mode = 'integer', OP = '*', na.rm = TRUE 874s int [1:2, 1:2] 1 1 1 1 874s mode = 'integer', OP = '/', na.rm = FALSE 874s num [1:2, 1:2] 1 1 1 1 874s mode = 'integer', OP = '/', na.rm = TRUE 874s num [1:2, 1:2] 1 1 1 1 874s List of 2 874s $ x: num [1:2, 1:2] 1 1 1 1 874s $ y: num 1 874s mode = 'double', OP = '+', na.rm = FALSE 874s num [1:2, 1:2] 2 2 2 2 874s mode = 'double', OP = '+', na.rm = TRUE 874s num [1:2, 1:2] 2 2 2 2 874s mode = 'double', OP = '-', na.rm = FALSE 874s num [1:2, 1:2] 0 0 0 0 874s mode = 'double', OP = '-', na.rm = TRUE 874s num [1:2, 1:2] 0 0 0 0 874s mode = 'double', OP = '*', na.rm = FALSE 874s num [1:2, 1:2] 1 1 1 1 874s mode = 'double', OP = '*', na.rm = TRUE 874s num [1:2, 1:2] 1 1 1 1 874s mode = 'double', OP = '/', na.rm = FALSE 874s num [1:2, 1:2] 1 1 1 1 874s mode = 'double', OP = '/', na.rm = TRUE 874s num [1:2, 1:2] 1 1 1 1 874s List of 2 874s $ x: logi [1:2, 1:2] TRUE TRUE TRUE TRUE 874s $ y: logi NA 874s mode = 'logical', OP = '+', na.rm = FALSE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'logical', OP = '+', na.rm = TRUE 874s int [1:2, 1:2] 1 1 1 1 874s mode = 'logical', OP = '-', na.rm = FALSE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'logical', OP = '-', na.rm = TRUE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'logical', OP = '*', na.rm = FALSE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'logical', OP = '*', na.rm = TRUE 874s int [1:2, 1:2] 1 1 1 1 874s mode = 'logical', OP = '/', na.rm = FALSE 874s num [1:2, 1:2] NA NA NA NA 874s mode = 'logical', OP = '/', na.rm = TRUE 874s num [1:2, 1:2] NA NA NA NA 874s List of 2 874s $ x: int [1:2, 1:2] 1 1 1 1 874s $ y: int NA 874s mode = 'integer', OP = '+', na.rm = FALSE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'integer', OP = '+', na.rm = TRUE 874s int [1:2, 1:2] 1 1 1 1 874s mode = 'integer', OP = '-', na.rm = FALSE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'integer', OP = '-', na.rm = TRUE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'integer', OP = '*', na.rm = FALSE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'integer', OP = '*', na.rm = TRUE 874s int [1:2, 1:2] 1 1 1 1 874s mode = 'integer', OP = '/', na.rm = FALSE 874s num [1:2, 1:2] NA NA NA NA 874s mode = 'integer', OP = '/', na.rm = TRUE 874s num [1:2, 1:2] NA NA NA NA 874s List of 2 874s $ x: num [1:2, 1:2] 1 1 1 1 874s $ y: num NA 874s mode = 'double', OP = '+', na.rm = FALSE 874s num [1:2, 1:2] NA NA NA NA 874s mode = 'double', OP = '+', na.rm = TRUE 874s num [1:2, 1:2] 1 1 1 1 874s mode = 'double', OP = '-', na.rm = FALSE 874s num [1:2, 1:2] NA NA NA NA 874s mode = 'double', OP = '-', na.rm = TRUE 874s num [1:2, 1:2] NA NA NA NA 874s mode = 'double', OP = '*', na.rm = FALSE 874s num [1:2, 1:2] NA NA NA NA 874s mode = 'double', OP = '*', na.rm = TRUE 874s num [1:2, 1:2] 1 1 1 1 874s mode = 'double', OP = '/', na.rm = FALSE 874s num [1:2, 1:2] NA NA NA NA 874s mode = 'double', OP = '/', na.rm = TRUE 874s num [1:2, 1:2] NA NA NA NA 874s List of 2 874s $ x: logi [1:2, 1:2] NA NA NA NA 874s $ y: logi TRUE 874s mode = 'logical', OP = '+', na.rm = FALSE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'logical', OP = '+', na.rm = TRUE 874s int [1:2, 1:2] 1 1 1 1 874s mode = 'logical', OP = '-', na.rm = FALSE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'logical', OP = '-', na.rm = TRUE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'logical', OP = '*', na.rm = FALSE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'logical', OP = '*', na.rm = TRUE 874s int [1:2, 1:2] 1 1 1 1 874s mode = 'logical', OP = '/', na.rm = FALSE 874s num [1:2, 1:2] NA NA NA NA 874s mode = 'logical', OP = '/', na.rm = TRUE 874s num [1:2, 1:2] NA NA NA NA 874s List of 2 874s $ x: int [1:2, 1:2] NA NA NA NA 874s $ y: int 1 874s mode = 'integer', OP = '+', na.rm = FALSE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'integer', OP = '+', na.rm = TRUE 874s int [1:2, 1:2] 1 1 1 1 874s mode = 'integer', OP = '-', na.rm = FALSE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'integer', OP = '-', na.rm = TRUE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'integer', OP = '*', na.rm = FALSE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'integer', OP = '*', na.rm = TRUE 874s int [1:2, 1:2] 1 1 1 1 874s mode = 'integer', OP = '/', na.rm = FALSE 874s num [1:2, 1:2] NA NA NA NA 874s mode = 'integer', OP = '/', na.rm = TRUE 874s num [1:2, 1:2] NA NA NA NA 874s List of 2 874s $ x: num [1:2, 1:2] NA NA NA NA 874s $ y: num 1 874s mode = 'double', OP = '+', na.rm = FALSE 874s num [1:2, 1:2] NA NA NA NA 874s mode = 'double', OP = '+', na.rm = TRUE 874s num [1:2, 1:2] 1 1 1 1 874s mode = 'double', OP = '-', na.rm = FALSE 874s num [1:2, 1:2] NA NA NA NA 874s mode = 'double', OP = '-', na.rm = TRUE 874s num [1:2, 1:2] NA NA NA NA 874s mode = 'double', OP = '*', na.rm = FALSE 874s num [1:2, 1:2] NA NA NA NA 874s mode = 'double', OP = '*', na.rm = TRUE 874s num [1:2, 1:2] 1 1 1 1 874s mode = 'double', OP = '/', na.rm = FALSE 874s num [1:2, 1:2] NA NA NA NA 874s mode = 'double', OP = '/', na.rm = TRUE 874s num [1:2, 1:2] NA NA NA NA 874s List of 2 874s $ x: logi [1:2, 1:2] NA NA NA NA 874s $ y: logi NA 874s mode = 'logical', OP = '+', na.rm = FALSE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'logical', OP = '+', na.rm = TRUE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'logical', OP = '-', na.rm = FALSE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'logical', OP = '-', na.rm = TRUE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'logical', OP = '*', na.rm = FALSE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'logical', OP = '*', na.rm = TRUE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'logical', OP = '/', na.rm = FALSE 874s num [1:2, 1:2] NA NA NA NA 874s mode = 'logical', OP = '/', na.rm = TRUE 874s num [1:2, 1:2] NA NA NA NA 874s List of 2 874s $ x: int [1:2, 1:2] NA NA NA NA 874s $ y: int NA 874s mode = 'integer', OP = '+', na.rm = FALSE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'integer', OP = '+', na.rm = TRUE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'integer', OP = '-', na.rm = FALSE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'integer', OP = '-', na.rm = TRUE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'integer', OP = '*', na.rm = FALSE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'integer', OP = '*', na.rm = TRUE 874s int [1:2, 1:2] NA NA NA NA 874s mode = 'integer', OP = '/', na.rm = FALSE 874s num [1:2, 1:2] NA NA NA NA 874s mode = 'integer', OP = '/', na.rm = TRUE 874s num [1:2, 1:2] NA NA NA NA 874s List of 2 874s $ x: num [1:2, 1:2] NA NA NA NA 874s $ y: num NA 874s mode = 'double', OP = '+', na.rm = FALSE 874s num [1:2, 1:2] NA NA NA NA 874s mode = 'double', OP = '+', na.rm = TRUE 874s num [1:2, 1:2] NA NA NA NA 874s mode = 'double', OP = '-', na.rm = FALSE 874s num [1:2, 1:2] NA NA NA NA 874s mode = 'double', OP = '-', na.rm = TRUE 874s num [1:2, 1:2] NA NA NA NA 874s mode = 'double', OP = '*', na.rm = FALSE 874s num [1:2, 1:2] NA NA NA NA 874s mode = 'double', OP = '*', na.rm = TRUE 874s num [1:2, 1:2] NA NA NA NA 874s mode = 'double', OP = '/', na.rm = FALSE 874s num [1:2, 1:2] NA NA NA NA 874s mode = 'double', OP = '/', na.rm = TRUE 874s num [1:2, 1:2] NA NA NA NA 874s > 874s 874s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 874s Copyright (C) 2024 The R Foundation for Statistical Computing 874s Platform: arm-unknown-linux-gnueabihf (32-bit) 874s 874s R is free software and comes with ABSOLUTELY NO WARRANTY. 874s You are welcome to redistribute it under certain conditions. 874s Type 'license()' or 'licence()' for distribution details. 874s 874s R is a collaborative project with many contributors. 874s Type 'contributors()' for more information and 874s 'citation()' on how to cite R or R packages in publications. 874s 874s Type 'demo()' for some demos, 'help()' for on-line help, or 874s 'help.start()' for an HTML browser interface to help. 874s Type 'q()' to quit R. 874s 874s > library("matrixStats") 874s > 874s > x_OP_y_R <- function(x, y, OP, na.rm = FALSE) { 874s + if (na.rm) { 874s + xnok <- is.na(x) 874s + ynok <- is.na(y) 874s + anok <- xnok & ynok 874s + unit <- switch(OP, 874s + "+" = 0, 874s + "-" = NA_real_, 874s + "*" = 1, 874s + "/" = NA_real_, 874s + stop("Unknown 'OP' operator: ", OP) 874s + ) 874s + x[xnok] <- unit 874s + y[ynok] <- unit 874s + } 874s + 874s + ans <- switch(OP, 874s + "+" = x + y, 874s + "-" = x - y, 874s + "*" = x * y, 874s + "/" = x / y, 874s + stop("Unknown 'OP' operator: ", OP) 874s + ) 874s + 874s + if (na.rm) { 874s + ans[anok] <- NA_real_ 874s + } 874s + 874s + ans 874s + } # x_OP_y_R() 874s > 874s > 874s > t_tx_OP_y_R <- function(x, y, OP, na.rm = FALSE) { 874s + t(x_OP_y_R(x = t(x), y = y, OP = OP, na.rm = na.rm)) 874s + } 874s > 874s > 874s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 874s > # Subsetted tests 874s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 874s > source("utils/validateIndicesFramework.R") 874s > for (OP in c("+", "-", "*", "/")) { 874s + for (mode in c("numeric", "integer", "logical")) { 874s + x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6L, ncol = 6L) 874s + y <- runif(6, min = 0, max = 6) 874s + storage.mode(x) <- mode 874s + storage.mode(y) <- mode 874s + if (mode == "numeric") y[1] <- Inf 874s + 874s + for (xrows in index_cases) { 874s + for (xcols in index_cases) { 874s + if (is.null(xrows)) xrows <- seq_len(nrow(x)) 874s + if (is.null(xcols)) xcols <- seq_len(ncol(x)) 874s + 874s + for (yidxs in list(xrows, xcols)) { 874s + for (na.rm in c(TRUE, FALSE)) { 874s + 874s + suppressWarnings({ 874s + actual <- tryCatch( 874s + x_OP_y(x, y, OP, xrows = xrows, xcols = xcols, yidxs = yidxs, 874s + na.rm = na.rm), 874s + error = function(c) "error" 874s + ) 874s + 874s + expect <- tryCatch( 874s + x_OP_y_R(x[xrows, xcols, drop = FALSE], y[yidxs], OP, 874s + na.rm = na.rm), 874s + error = function(c) "error" 874s + ) 874s + }) 874s + stopifnot(all.equal(as.vector(actual), as.vector(expect))) 874s + 874s + suppressWarnings({ 874s + actual <- tryCatch( 874s + t_tx_OP_y(x, y, OP, xrows = xrows, xcols = xcols, yidxs = yidxs, 874s + na.rm = na.rm), 874s + error = function(c) "error" 874s + ) 874s + 874s + expect <- tryCatch( 874s + t_tx_OP_y_R(x[xrows, xcols, drop = FALSE], y[yidxs], OP, 874s + na.rm = na.rm), 874s + error = function(c) "error" 874s + ) 874s + }) 874s + stopifnot(all.equal(as.vector(actual), as.vector(expect))) 874s + } 874s + } 874s + } 874s + } 874s + } 874s + } 887s > 887s 887s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 887s Copyright (C) 2024 The R Foundation for Statistical Computing 887s Platform: arm-unknown-linux-gnueabihf (32-bit) 887s 887s R is free software and comes with ABSOLUTELY NO WARRANTY. 887s You are welcome to redistribute it under certain conditions. 887s Type 'license()' or 'licence()' for distribution details. 887s 887s R is a collaborative project with many contributors. 887s Type 'contributors()' for more information and 887s 'citation()' on how to cite R or R packages in publications. 887s 887s Type 'demo()' for some demos, 'help()' for on-line help, or 887s 'help.start()' for an HTML browser interface to help. 887s Type 'q()' to quit R. 887s 887s > ## These tests need to be last of all tests, otherwise 887s > ## covr::package_coverage() gives an error. 887s > cat("1. Loading package\n") 887s 1. Loading package 887s > loadNamespace("matrixStats") 887s 887s > stopifnot("matrixStats" %in% loadedNamespaces()) 887s > 887s > cat("2. Unloading package\n") 887s 2. Unloading package 887s > unloadNamespace("matrixStats") 887s > stopifnot(!"matrixStats" %in% loadedNamespaces()) 887s > 887s > if (FALSE) { 887s + ## 'covr' gives "Error in library("matrixStats") : 887s + ## there is no package called 'matrixStats'" here, cf. 887s + ## https://travis-ci.org/HenrikBengtsson/matrixStats/builds/48015577 887s + 887s + cat("3. Attaching package\n") 887s + library("matrixStats") 887s + stopifnot("package:matrixStats" %in% search()) 887s + 887s + cat("4. Detaching package\n") 887s + detach("package:matrixStats") 887s + stopifnot(!"package:matrixStats" %in% search()) 887s + stopifnot("matrixStats" %in% loadedNamespaces()) 887s + 887s + cat("5. Unloading package\n") 887s + unloadNamespace("matrixStats") 887s + stopifnot(!"matrixStats" %in% loadedNamespaces()) 887s + 887s + cat("6. Attaching package (again)\n") 887s + library("matrixStats") 887s + stopifnot("package:matrixStats" %in% search()) 887s + 887s + cat("7. Detaching package (again)\n") 887s + detach("package:matrixStats") 887s + stopifnot(!"package:matrixStats" %in% search()) 887s + stopifnot("matrixStats" %in% loadedNamespaces()) 887s + } 887s > 887s > cat("7. DONE\n") 887s 7. DONE 887s > 887s autopkgtest [12:32:47]: test run-unit-test: -----------------------] 903s run-unit-test PASS 903s autopkgtest [12:33:03]: test run-unit-test: - - - - - - - - - - results - - - - - - - - - - 906s autopkgtest [12:33:06]: test pkg-r-autopkgtest: preparing testbed 956s autopkgtest [12:33:56]: testbed dpkg architecture: armhf 957s autopkgtest [12:33:57]: testbed apt version: 2.7.12 957s autopkgtest [12:33:57]: @@@@@@@@@@@@@@@@@@@@ test bed setup 959s Get:1 http://ftpmaster.internal/ubuntu noble-proposed InRelease [117 kB] 960s Get:2 http://ftpmaster.internal/ubuntu noble-proposed/universe Sources [4019 kB] 960s Get:3 http://ftpmaster.internal/ubuntu noble-proposed/restricted Sources [8504 B] 960s Get:4 http://ftpmaster.internal/ubuntu noble-proposed/main Sources [496 kB] 960s Get:5 http://ftpmaster.internal/ubuntu noble-proposed/multiverse Sources [56.0 kB] 960s Get:6 http://ftpmaster.internal/ubuntu noble-proposed/main armhf Packages [669 kB] 960s Get:7 http://ftpmaster.internal/ubuntu noble-proposed/main armhf c-n-f Metadata [2492 B] 960s Get:8 http://ftpmaster.internal/ubuntu noble-proposed/restricted armhf Packages [1372 B] 960s Get:9 http://ftpmaster.internal/ubuntu noble-proposed/restricted armhf c-n-f Metadata [116 B] 960s Get:10 http://ftpmaster.internal/ubuntu noble-proposed/universe armhf Packages [4075 kB] 960s Get:11 http://ftpmaster.internal/ubuntu noble-proposed/universe armhf c-n-f Metadata [7776 B] 960s Get:12 http://ftpmaster.internal/ubuntu noble-proposed/multiverse armhf Packages [49.1 kB] 960s Get:13 http://ftpmaster.internal/ubuntu noble-proposed/multiverse armhf c-n-f Metadata [116 B] 967s Fetched 9502 kB in 2s (3858 kB/s) 968s Reading package lists... 974s Get:1 http://ports.ubuntu.com/ubuntu-ports noble-proposed InRelease [117 kB] 974s Get:2 http://ports.ubuntu.com/ubuntu-ports noble-proposed/main armhf Packages [669 kB] 974s Get:3 http://ports.ubuntu.com/ubuntu-ports noble-proposed/main armhf c-n-f Metadata [2492 B] 974s Get:4 http://ports.ubuntu.com/ubuntu-ports noble-proposed/universe armhf Packages [4075 kB] 974s Get:5 http://ports.ubuntu.com/ubuntu-ports noble-proposed/universe armhf c-n-f Metadata [7776 B] 974s Get:6 http://ports.ubuntu.com/ubuntu-ports noble-proposed/restricted armhf Packages [1372 B] 974s Get:7 http://ports.ubuntu.com/ubuntu-ports noble-proposed/restricted armhf c-n-f Metadata [116 B] 974s Get:8 http://ports.ubuntu.com/ubuntu-ports noble-proposed/multiverse armhf Packages [49.1 kB] 974s Get:9 http://ports.ubuntu.com/ubuntu-ports noble-proposed/multiverse armhf c-n-f Metadata [116 B] 981s Fetched 4922 kB in 2s (2697 kB/s) 981s Reading package lists... 987s sh: 1: dhclient: not found 988s tee: /proc/self/fd/2: Permission denied 1016s Hit:1 http://ftpmaster.internal/ubuntu noble InRelease 1016s Hit:2 http://ports.ubuntu.com/ubuntu-ports noble-proposed InRelease 1016s Hit:3 http://ftpmaster.internal/ubuntu noble-updates InRelease 1016s Hit:4 http://ports.ubuntu.com/ubuntu-ports noble InRelease 1016s Hit:5 http://ftpmaster.internal/ubuntu noble-security InRelease 1016s Hit:6 http://ports.ubuntu.com/ubuntu-ports noble-updates InRelease 1016s Hit:7 http://ports.ubuntu.com/ubuntu-ports noble-backports InRelease 1016s Hit:8 http://ftpmaster.internal/ubuntu noble-proposed InRelease 1016s Hit:9 http://ports.ubuntu.com/ubuntu-ports noble-security InRelease 1020s Reading package lists... 1020s Reading package lists... 1021s Building dependency tree... 1021s Reading state information... 1023s Calculating upgrade... 1024s The following packages were automatically installed and are no longer required: 1024s linux-headers-6.8.0-11 python3-distutils python3-lib2to3 1024s Use 'apt autoremove' to remove them. 1025s The following packages will be REMOVED: 1025s libapt-pkg6.0 libarchive13 libatm1 libcurl3-gnutls libcurl4 libdb5.3 libelf1 1025s libext2fs2 libgdbm-compat4 libgdbm6 libglib2.0-0 libgnutls30 libgpgme11 1025s libhogweed6 libmagic1 libnetplan0 libnettle8 libnpth0 libnvme1 libparted2 1025s libpcap0.8 libperl5.38 libpng16-16 libpsl5 libreadline8 libreiserfscore0 1025s libssl3 libtirpc3 libuv1 linux-headers-6.8.0-11-generic 1025s The following NEW packages will be installed: 1025s libapt-pkg6.0t64 libarchive13t64 libatm1t64 libcurl3t64-gnutls libcurl4t64 1025s libdb5.3t64 libelf1t64 libext2fs2t64 libgdbm-compat4t64 libgdbm6t64 1025s libglib2.0-0t64 libgnutls30t64 libgpgme11t64 libhogweed6t64 libmagic1t64 1026s libnetplan1 libnettle8t64 libnpth0t64 libnvme1t64 libparted2t64 1026s libpcap0.8t64 libperl5.38t64 libpng16-16t64 libpsl5t64 libreadline8t64 1026s libreiserfscore0t64 libssl3t64 libtirpc3t64 libuv1t64 linux-headers-6.8.0-20 1026s linux-headers-6.8.0-20-generic xdg-user-dirs 1026s The following packages have been kept back: 1026s multipath-tools 1026s The following packages will be upgraded: 1026s apparmor apt apt-utils base-files bind9-dnsutils bind9-host bind9-libs 1026s binutils binutils-arm-linux-gnueabihf binutils-common bolt bsdextrautils 1026s bsdutils btrfs-progs cloud-init coreutils cryptsetup-bin curl dbus dbus-bin 1026s dbus-daemon dbus-session-bus-common dbus-system-bus-common dbus-user-session 1026s debianutils dhcpcd-base dirmngr dmsetup dpkg dpkg-dev e2fsprogs 1026s e2fsprogs-l10n eject fdisk file fonts-ubuntu-console ftp fwupd gawk 1026s gcc-13-base gcc-14-base gir1.2-girepository-2.0 gir1.2-glib-2.0 gnupg 1026s gnupg-l10n gnupg-utils gpg gpg-agent gpg-wks-client gpgconf gpgsm gpgv 1026s groff-base ibverbs-providers inetutils-telnet info initramfs-tools 1026s initramfs-tools-bin initramfs-tools-core install-info iproute2 jq keyboxd 1026s kmod kpartx krb5-locales libapparmor1 libaudit-common libaudit1 libbinutils 1026s libblkid1 libblockdev-crypto3 libblockdev-fs3 libblockdev-loop3 1026s libblockdev-mdraid3 libblockdev-nvme3 libblockdev-part3 libblockdev-swap3 1026s libblockdev-utils3 libblockdev3 libbpf1 libbrotli1 libbsd0 libc-bin libc6 1026s libcap-ng0 libcom-err2 libcryptsetup12 libctf-nobfd0 libctf0 libdbus-1-3 1026s libdebconfclient0 libdevmapper1.02.1 libdpkg-perl libevent-core-2.1-7 1026s libexpat1 libfdisk1 libfido2-1 libftdi1-2 libfwupd2 libgcc-s1 1026s libgirepository-1.0-1 libglib2.0-data libgssapi-krb5-2 libgudev-1.0-0 1026s libgusb2 libibverbs1 libjcat1 libjq1 libjson-glib-1.0-0 1026s libjson-glib-1.0-common libk5crypto3 libkmod2 libkrb5-3 libkrb5support0 1026s libldap-common libldap2 liblocale-gettext-perl liblzma5 libmagic-mgc 1026s libmbim-glib4 libmbim-proxy libmm-glib0 libmount1 libnghttp2-14 libnsl2 1026s libnss-systemd libpam-modules libpam-modules-bin libpam-runtime 1026s libpam-systemd libpam0g libplymouth5 libpolkit-agent-1-0 1026s libpolkit-gobject-1-0 libproc2-0 libprotobuf-c1 libpython3-stdlib 1026s libpython3.11-minimal libpython3.11-stdlib libpython3.12-minimal 1026s libpython3.12-stdlib libqmi-glib5 libqmi-proxy libqrtr-glib0 librtmp1 1026s libsasl2-2 libsasl2-modules libsasl2-modules-db libseccomp2 libselinux1 1026s libsemanage-common libsemanage2 libsframe1 libslang2 libsmartcols1 1026s libsqlite3-0 libss2 libssh-4 libstdc++6 libsystemd-shared libsystemd0 1026s libtext-charwidth-perl libtext-iconv-perl libtirpc-common libudev1 1026s libudisks2-0 libusb-1.0-0 libuuid1 libvolume-key1 libxml2 libxmlb2 libxmuu1 1026s linux-headers-generic locales logsave lshw lsof man-db motd-news-config 1026s mount mtr-tiny netplan-generator netplan.io openssh-client openssh-server 1026s openssh-sftp-server openssl parted perl perl-base perl-modules-5.38 1026s pinentry-curses plymouth plymouth-theme-ubuntu-text procps psmisc 1026s python-apt-common python3 python3-apt python3-cryptography python3-dbus 1026s python3-distutils python3-gdbm python3-gi python3-lib2to3 python3-markupsafe 1026s python3-minimal python3-netplan python3-pkg-resources python3-pyrsistent 1026s python3-setuptools python3-typing-extensions python3-yaml python3.11 1026s python3.11-minimal python3.12 python3.12-minimal readline-common rsync 1026s rsyslog shared-mime-info sudo systemd systemd-dev systemd-resolved 1026s systemd-sysv systemd-timesyncd tcpdump telnet tnftp ubuntu-minimal 1026s ubuntu-pro-client ubuntu-pro-client-l10n ubuntu-standard udev udisks2 1026s usb.ids util-linux uuid-runtime vim-common vim-tiny wget xxd xz-utils zlib1g 1026s 246 upgraded, 32 newly installed, 30 to remove and 1 not upgraded. 1026s Need to get 109 MB of archives. 1026s After this operation, 85.0 MB of additional disk space will be used. 1026s Get:1 http://ftpmaster.internal/ubuntu noble-proposed/main armhf motd-news-config all 13ubuntu8 [5098 B] 1026s Get:2 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gcc-14-base armhf 14-20240315-1ubuntu1 [47.0 kB] 1026s Get:3 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgcc-s1 armhf 14-20240315-1ubuntu1 [41.5 kB] 1026s Get:4 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libstdc++6 armhf 14-20240315-1ubuntu1 [714 kB] 1026s Get:5 http://ftpmaster.internal/ubuntu noble/main armhf libc6 armhf 2.39-0ubuntu6 [2827 kB] 1026s Get:6 http://ftpmaster.internal/ubuntu noble-proposed/main armhf base-files armhf 13ubuntu8 [73.9 kB] 1026s Get:7 http://ftpmaster.internal/ubuntu noble-proposed/main armhf bsdutils armhf 1:2.39.3-9ubuntu2 [102 kB] 1026s Get:8 http://ftpmaster.internal/ubuntu noble-proposed/main armhf openssl armhf 3.0.13-0ubuntu2 [975 kB] 1026s Get:9 http://ftpmaster.internal/ubuntu noble-proposed/main armhf zlib1g armhf 1:1.3.dfsg-3.1ubuntu1 [49.2 kB] 1026s Get:10 http://ftpmaster.internal/ubuntu noble-proposed/main armhf librtmp1 armhf 2.4+20151223.gitfa8646d.1-2build6 [51.3 kB] 1026s Get:11 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3.12 armhf 3.12.2-4build3 [645 kB] 1026s Get:12 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libexpat1 armhf 2.6.1-2 [65.9 kB] 1026s Get:13 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3.12-minimal armhf 3.12.2-4build3 [1942 kB] 1027s Get:14 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpython3.12-stdlib armhf 3.12.2-4build3 [1906 kB] 1027s Get:15 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpython3.12-minimal armhf 3.12.2-4build3 [816 kB] 1027s Get:16 http://ftpmaster.internal/ubuntu noble-proposed/main armhf parted armhf 3.6-3.1build2 [39.4 kB] 1027s Get:17 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblkid1 armhf 2.39.3-9ubuntu2 [160 kB] 1027s Get:18 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libselinux1 armhf 3.5-2ubuntu1 [70.9 kB] 1027s Get:19 http://ftpmaster.internal/ubuntu noble-proposed/main armhf systemd-dev all 255.4-1ubuntu5 [103 kB] 1027s Get:20 http://ftpmaster.internal/ubuntu noble-proposed/main armhf systemd-timesyncd armhf 255.4-1ubuntu5 [36.0 kB] 1027s Get:21 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dbus-session-bus-common all 1.14.10-4ubuntu2 [80.3 kB] 1027s Get:22 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libaudit-common all 1:3.1.2-2.1 [5674 B] 1027s Get:23 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libcap-ng0 armhf 0.8.4-2build1 [13.5 kB] 1027s Get:24 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libaudit1 armhf 1:3.1.2-2.1 [44.3 kB] 1027s Get:25 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpam0g armhf 1.5.3-5ubuntu3 [62.0 kB] 1027s Get:26 http://ftpmaster.internal/ubuntu noble-proposed/main armhf liblzma5 armhf 5.6.0-0.2 [117 kB] 1027s Get:27 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libldap2 armhf 2.6.7+dfsg-1~exp1ubuntu6 [172 kB] 1027s Get:28 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libudisks2-0 armhf 2.10.1-6 [143 kB] 1027s Get:29 http://ftpmaster.internal/ubuntu noble-proposed/main armhf udisks2 armhf 2.10.1-6 [276 kB] 1027s Get:30 http://ftpmaster.internal/ubuntu noble-proposed/main armhf shared-mime-info armhf 2.4-1build1 [470 kB] 1027s Get:31 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gir1.2-girepository-2.0 armhf 1.79.1-1ubuntu6 [24.8 kB] 1027s Get:32 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gir1.2-glib-2.0 armhf 2.79.3-3ubuntu5 [182 kB] 1027s Get:33 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgirepository-1.0-1 armhf 1.79.1-1ubuntu6 [106 kB] 1027s Get:34 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-gi armhf 3.47.0-3build1 [219 kB] 1027s Get:35 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-dbus armhf 1.3.2-5build2 [94.7 kB] 1027s Get:36 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgpgme11t64 armhf 1.18.0-4.1ubuntu3 [120 kB] 1027s Get:37 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libvolume-key1 armhf 0.3.12-7build1 [38.4 kB] 1027s Get:38 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libnetplan1 armhf 1.0-1 [113 kB] 1027s Get:39 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-netplan armhf 1.0-1 [22.5 kB] 1027s Get:40 http://ftpmaster.internal/ubuntu noble-proposed/main armhf netplan-generator armhf 1.0-1 [58.7 kB] 1027s Get:41 http://ftpmaster.internal/ubuntu noble-proposed/main armhf initramfs-tools-bin armhf 0.142ubuntu23 [20.3 kB] 1027s Get:42 http://ftpmaster.internal/ubuntu noble-proposed/main armhf initramfs-tools-core all 0.142ubuntu23 [50.1 kB] 1027s Get:43 http://ftpmaster.internal/ubuntu noble/main armhf ubuntu-minimal armhf 1.536build1 [10.7 kB] 1027s Get:44 http://ftpmaster.internal/ubuntu noble-proposed/main armhf initramfs-tools all 0.142ubuntu23 [9058 B] 1027s Get:45 http://ftpmaster.internal/ubuntu noble-proposed/main armhf netplan.io armhf 1.0-1 [64.3 kB] 1027s Get:46 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libxmlb2 armhf 0.3.15-1build1 [57.0 kB] 1027s Get:47 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libqrtr-glib0 armhf 1.2.2-1ubuntu3 [15.4 kB] 1027s Get:48 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libqmi-glib5 armhf 1.35.2-0ubuntu1 [908 kB] 1027s Get:49 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libqmi-proxy armhf 1.35.2-0ubuntu1 [5732 B] 1027s Get:50 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpolkit-agent-1-0 armhf 124-1ubuntu1 [15.3 kB] 1027s Get:51 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpolkit-gobject-1-0 armhf 124-1ubuntu1 [44.1 kB] 1027s Get:52 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libglib2.0-0t64 armhf 2.79.3-3ubuntu5 [1414 kB] 1027s Get:53 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libjcat1 armhf 0.2.0-2build2 [30.4 kB] 1027s Get:54 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libarchive13t64 armhf 3.7.2-1.1ubuntu2 [330 kB] 1027s Get:55 http://ftpmaster.internal/ubuntu noble-proposed/main armhf fwupd armhf 1.9.15-2 [4350 kB] 1028s Get:56 http://ftpmaster.internal/ubuntu noble-proposed/main armhf ubuntu-pro-client-l10n armhf 31.2.2 [19.4 kB] 1028s Get:57 http://ftpmaster.internal/ubuntu noble-proposed/main armhf ubuntu-pro-client armhf 31.2.2 [216 kB] 1028s Get:58 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3.11 armhf 3.11.8-1build4 [589 kB] 1028s Get:59 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3.11-minimal armhf 3.11.8-1build4 [1795 kB] 1028s Get:60 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpython3.11-minimal armhf 3.11.8-1build4 [826 kB] 1028s Get:61 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsasl2-modules-db armhf 2.1.28+dfsg1-5ubuntu1 [19.0 kB] 1028s Get:62 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libtext-iconv-perl armhf 1.7-8build2 [12.7 kB] 1028s Get:63 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libtext-charwidth-perl armhf 0.04-11build2 [8962 B] 1028s Get:64 http://ftpmaster.internal/ubuntu noble-proposed/main armhf perl-base armhf 5.38.2-3.2 [1671 kB] 1028s Get:65 http://ftpmaster.internal/ubuntu noble-proposed/main armhf liblocale-gettext-perl armhf 1.07-6ubuntu4 [15.0 kB] 1028s Get:66 http://ftpmaster.internal/ubuntu noble-proposed/main armhf perl-modules-5.38 all 5.38.2-3.2 [3110 kB] 1028s Get:67 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-gdbm armhf 3.12.2-3ubuntu1.1 [17.1 kB] 1028s Get:68 http://ftpmaster.internal/ubuntu noble-proposed/main armhf man-db armhf 2.12.0-3build4 [1196 kB] 1028s Get:69 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgdbm6t64 armhf 1.23-5.1 [30.3 kB] 1028s Get:70 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgdbm-compat4t64 armhf 1.23-5.1 [6208 B] 1028s Get:71 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libperl5.38t64 armhf 5.38.2-3.2 [4101 kB] 1028s Get:72 http://ftpmaster.internal/ubuntu noble-proposed/main armhf perl armhf 5.38.2-3.2 [231 kB] 1028s Get:73 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libdb5.3t64 armhf 5.3.28+dfsg2-6 [661 kB] 1028s Get:74 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpython3.11-stdlib armhf 3.11.8-1build4 [1810 kB] 1029s Get:75 http://ftpmaster.internal/ubuntu noble-proposed/main armhf keyboxd armhf 2.4.4-2ubuntu15 [111 kB] 1029s Get:76 http://ftpmaster.internal/ubuntu noble/main armhf libnpth0t64 armhf 1.6-3.1 [6940 B] 1029s Get:77 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gpgv armhf 2.4.4-2ubuntu15 [224 kB] 1029s Get:78 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gpg armhf 2.4.4-2ubuntu15 [524 kB] 1029s Get:79 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gpg-wks-client armhf 2.4.4-2ubuntu15 [87.4 kB] 1029s Get:80 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gnupg-utils armhf 2.4.4-2ubuntu15 [158 kB] 1029s Get:81 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gpg-agent armhf 2.4.4-2ubuntu15 [235 kB] 1029s Get:82 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gpgsm armhf 2.4.4-2ubuntu15 [241 kB] 1029s Get:83 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libreadline8t64 armhf 8.2-4 [129 kB] 1029s Get:84 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gawk armhf 1:5.2.1-2build2 [415 kB] 1029s Get:85 http://ftpmaster.internal/ubuntu noble-proposed/main armhf fdisk armhf 2.39.3-9ubuntu2 [135 kB] 1029s Get:86 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gpgconf armhf 2.4.4-2ubuntu15 [115 kB] 1029s Get:87 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dirmngr armhf 2.4.4-2ubuntu15 [346 kB] 1029s Get:88 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gnupg all 2.4.4-2ubuntu15 [359 kB] 1029s Get:89 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-apt armhf 2.7.7 [162 kB] 1029s Get:90 http://ftpmaster.internal/ubuntu noble-proposed/main armhf apt-utils armhf 2.7.14 [210 kB] 1029s Get:91 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libapt-pkg6.0t64 armhf 2.7.14 [986 kB] 1029s Get:92 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libnettle8t64 armhf 3.9.1-2.2 [187 kB] 1029s Get:93 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libhogweed6t64 armhf 3.9.1-2.2 [187 kB] 1029s Get:94 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgnutls30t64 armhf 3.8.3-1.1ubuntu2 [1046 kB] 1029s Get:95 http://ftpmaster.internal/ubuntu noble-proposed/main armhf apt armhf 2.7.14 [1368 kB] 1029s Get:96 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libcurl3t64-gnutls armhf 8.5.0-2ubuntu8 [290 kB] 1029s Get:97 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libfwupd2 armhf 1.9.15-2 [123 kB] 1029s Get:98 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpsl5t64 armhf 0.21.2-1.1 [55.7 kB] 1029s Get:99 http://ftpmaster.internal/ubuntu noble-proposed/main armhf wget armhf 1.21.4-1ubuntu2 [317 kB] 1029s Get:100 http://ftpmaster.internal/ubuntu noble-proposed/main armhf tnftp armhf 20230507-2build1 [98.6 kB] 1029s Get:101 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpcap0.8t64 armhf 1.10.4-4.1ubuntu2 [137 kB] 1029s Get:102 http://ftpmaster.internal/ubuntu noble-proposed/main armhf tcpdump armhf 4.99.4-3ubuntu2 [425 kB] 1030s Get:103 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsystemd-shared armhf 255.4-1ubuntu5 [2009 kB] 1030s Get:104 http://ftpmaster.internal/ubuntu noble-proposed/main armhf systemd-resolved armhf 255.4-1ubuntu5 [289 kB] 1030s Get:105 http://ftpmaster.internal/ubuntu noble-proposed/main armhf sudo armhf 1.9.15p5-3ubuntu3 [936 kB] 1030s Get:106 http://ftpmaster.internal/ubuntu noble-proposed/main armhf rsync armhf 3.2.7-1build1 [413 kB] 1030s Get:107 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-cryptography armhf 41.0.7-4build2 [788 kB] 1030s Get:108 http://ftpmaster.internal/ubuntu noble-proposed/main armhf openssh-sftp-server armhf 1:9.6p1-3ubuntu11 [35.5 kB] 1030s Get:109 http://ftpmaster.internal/ubuntu noble-proposed/main armhf openssh-client armhf 1:9.6p1-3ubuntu11 [890 kB] 1030s Get:110 http://ftpmaster.internal/ubuntu noble-proposed/main armhf openssh-server armhf 1:9.6p1-3ubuntu11 [503 kB] 1030s Get:111 http://ftpmaster.internal/ubuntu noble-proposed/main armhf linux-headers-6.8.0-20 all 6.8.0-20.20 [13.6 MB] 1031s Get:112 http://ftpmaster.internal/ubuntu noble-proposed/main armhf linux-headers-6.8.0-20-generic armhf 6.8.0-20.20 [1287 kB] 1031s Get:113 http://ftpmaster.internal/ubuntu noble-proposed/main armhf linux-headers-generic armhf 6.8.0-20.20+1 [9610 B] 1031s Get:114 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libssl3t64 armhf 3.0.13-0ubuntu2 [1558 kB] 1031s Get:115 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libudev1 armhf 255.4-1ubuntu5 [166 kB] 1031s Get:116 http://ftpmaster.internal/ubuntu noble-proposed/main armhf systemd armhf 255.4-1ubuntu5 [3502 kB] 1031s Get:117 http://ftpmaster.internal/ubuntu noble-proposed/main armhf udev armhf 255.4-1ubuntu5 [1852 kB] 1031s Get:118 http://ftpmaster.internal/ubuntu noble-proposed/main armhf systemd-sysv armhf 255.4-1ubuntu5 [11.9 kB] 1031s Get:119 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libnss-systemd armhf 255.4-1ubuntu5 [148 kB] 1031s Get:120 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpam-systemd armhf 255.4-1ubuntu5 [216 kB] 1031s Get:121 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsystemd0 armhf 255.4-1ubuntu5 [410 kB] 1031s Get:122 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpam-modules-bin armhf 1.5.3-5ubuntu3 [47.0 kB] 1031s Get:123 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpam-modules armhf 1.5.3-5ubuntu3 [261 kB] 1031s Get:124 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpam-runtime all 1.5.3-5ubuntu3 [40.8 kB] 1031s Get:125 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dbus-user-session armhf 1.14.10-4ubuntu2 [9962 B] 1031s Get:126 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libapparmor1 armhf 4.0.0-beta3-0ubuntu2 [45.0 kB] 1031s Get:127 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dbus-bin armhf 1.14.10-4ubuntu2 [37.1 kB] 1031s Get:128 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dbus-system-bus-common all 1.14.10-4ubuntu2 [81.5 kB] 1031s Get:129 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dbus armhf 1.14.10-4ubuntu2 [28.1 kB] 1031s Get:130 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dbus-daemon armhf 1.14.10-4ubuntu2 [109 kB] 1031s Get:131 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libdbus-1-3 armhf 1.14.10-4ubuntu2 [190 kB] 1031s Get:132 http://ftpmaster.internal/ubuntu noble-proposed/main armhf kmod armhf 31+20240202-2ubuntu4 [91.8 kB] 1031s Get:133 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libkmod2 armhf 31+20240202-2ubuntu4 [44.9 kB] 1031s Get:134 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libmount1 armhf 2.39.3-9ubuntu2 [171 kB] 1031s Get:135 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libseccomp2 armhf 2.5.5-1ubuntu2 [49.5 kB] 1031s Get:136 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libuuid1 armhf 2.39.3-9ubuntu2 [34.4 kB] 1031s Get:137 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libcryptsetup12 armhf 2:2.7.0-1ubuntu2 [238 kB] 1031s Get:138 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libfdisk1 armhf 2.39.3-9ubuntu2 [196 kB] 1031s Get:139 http://ftpmaster.internal/ubuntu noble-proposed/main armhf mount armhf 2.39.3-9ubuntu2 [134 kB] 1031s Get:140 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libdevmapper1.02.1 armhf 2:1.02.185-3ubuntu2 [135 kB] 1031s Get:141 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libparted2t64 armhf 3.6-3.1build2 [143 kB] 1031s Get:142 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsqlite3-0 armhf 3.45.1-1ubuntu1 [599 kB] 1031s Get:143 http://ftpmaster.internal/ubuntu noble-proposed/main armhf pinentry-curses armhf 1.2.1-3ubuntu4 [36.7 kB] 1031s Get:144 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsmartcols1 armhf 2.39.3-9ubuntu2 [117 kB] 1031s Get:145 http://ftpmaster.internal/ubuntu noble-proposed/main armhf readline-common all 8.2-4 [56.4 kB] 1031s Get:146 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-yaml armhf 6.0.1-2build1 [117 kB] 1031s Get:147 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python-apt-common all 2.7.7 [19.8 kB] 1031s Get:148 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-setuptools all 68.1.2-2ubuntu1 [396 kB] 1031s Get:149 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-pkg-resources all 68.1.2-2ubuntu1 [168 kB] 1031s Get:150 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dpkg armhf 1.22.6ubuntu4 [1229 kB] 1031s Get:151 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-minimal armhf 3.12.2-0ubuntu1 [27.1 kB] 1031s Get:152 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3 armhf 3.12.2-0ubuntu1 [24.1 kB] 1031s Get:153 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpython3-stdlib armhf 3.12.2-0ubuntu1 [9802 B] 1031s Get:154 http://ftpmaster.internal/ubuntu noble-proposed/main armhf bsdextrautils armhf 2.39.3-9ubuntu2 [78.7 kB] 1031s Get:155 http://ftpmaster.internal/ubuntu noble-proposed/main armhf groff-base armhf 1.23.0-3build1 [946 kB] 1031s Get:156 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsasl2-2 armhf 2.1.28+dfsg1-5ubuntu1 [49.7 kB] 1031s Get:157 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-utils3 armhf 3.1.0-1build1 [16.9 kB] 1031s Get:158 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-crypto3 armhf 3.1.0-1build1 [20.3 kB] 1031s Get:159 http://ftpmaster.internal/ubuntu noble-proposed/main armhf logsave armhf 1.47.0-2.4~exp1ubuntu2 [21.9 kB] 1031s Get:160 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dhcpcd-base armhf 1:10.0.6-1ubuntu2 [186 kB] 1031s Get:161 http://ftpmaster.internal/ubuntu noble-proposed/main armhf eject armhf 2.39.3-9ubuntu2 [43.2 kB] 1031s Get:162 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libbpf1 armhf 1:1.3.0-2build1 [146 kB] 1031s Get:163 http://ftpmaster.internal/ubuntu noble-proposed/main armhf iproute2 armhf 6.1.0-1ubuntu5 [1060 kB] 1031s Get:164 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libelf1t64 armhf 0.190-1.1build2 [49.9 kB] 1031s Get:165 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libtirpc-common all 1.3.4+ds-1.1 [8018 B] 1031s Get:166 http://ftpmaster.internal/ubuntu noble-proposed/main armhf lsof armhf 4.95.0-1build2 [248 kB] 1031s Get:167 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libnsl2 armhf 1.3.0-3build2 [36.5 kB] 1031s Get:168 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgssapi-krb5-2 armhf 1.20.1-6ubuntu1 [119 kB] 1031s Get:169 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libkrb5-3 armhf 1.20.1-6ubuntu1 [320 kB] 1031s Get:170 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libkrb5support0 armhf 1.20.1-6ubuntu1 [31.5 kB] 1032s Get:171 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libk5crypto3 armhf 1.20.1-6ubuntu1 [78.6 kB] 1032s Get:172 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libcom-err2 armhf 1.47.0-2.4~exp1ubuntu2 [21.9 kB] 1032s Get:173 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libtirpc3t64 armhf 1.3.4+ds-1.1 [73.2 kB] 1032s Get:174 http://ftpmaster.internal/ubuntu noble/main armhf libc-bin armhf 2.39-0ubuntu6 [530 kB] 1032s Get:175 http://ftpmaster.internal/ubuntu noble/main armhf locales all 2.39-0ubuntu6 [4232 kB] 1032s Get:176 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libproc2-0 armhf 2:4.0.4-4ubuntu2 [49.0 kB] 1032s Get:177 http://ftpmaster.internal/ubuntu noble-proposed/main armhf procps armhf 2:4.0.4-4ubuntu2 [700 kB] 1032s Get:178 http://ftpmaster.internal/ubuntu noble-proposed/main armhf vim-tiny armhf 2:9.1.0016-1ubuntu6 [665 kB] 1032s Get:179 http://ftpmaster.internal/ubuntu noble-proposed/main armhf vim-common all 2:9.1.0016-1ubuntu6 [385 kB] 1032s Get:180 http://ftpmaster.internal/ubuntu noble-proposed/main armhf e2fsprogs-l10n all 1.47.0-2.4~exp1ubuntu2 [5996 B] 1032s Get:181 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-fs3 armhf 3.1.0-1build1 [34.4 kB] 1032s Get:182 http://ftpmaster.internal/ubuntu noble/main armhf libreiserfscore0t64 armhf 1:3.6.27-7.1 [66.2 kB] 1032s Get:183 http://ftpmaster.internal/ubuntu noble-proposed/main armhf btrfs-progs armhf 6.6.3-1.1build1 [852 kB] 1032s Get:184 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libext2fs2t64 armhf 1.47.0-2.4~exp1ubuntu2 [201 kB] 1032s Get:185 http://ftpmaster.internal/ubuntu noble-proposed/main armhf e2fsprogs armhf 1.47.0-2.4~exp1ubuntu2 [571 kB] 1032s Get:186 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-loop3 armhf 3.1.0-1build1 [6502 B] 1032s Get:187 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-mdraid3 armhf 3.1.0-1build1 [13.3 kB] 1032s Get:188 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-nvme3 armhf 3.1.0-1build1 [17.5 kB] 1032s Get:189 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libnvme1t64 armhf 1.8-3 [67.5 kB] 1032s Get:190 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-part3 armhf 3.1.0-1build1 [16.4 kB] 1032s Get:191 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-swap3 armhf 3.1.0-1build1 [8894 B] 1032s Get:192 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev3 armhf 3.1.0-1build1 [42.9 kB] 1032s Get:193 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgudev-1.0-0 armhf 1:238-3ubuntu2 [13.6 kB] 1032s Get:194 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libxml2 armhf 2.9.14+dfsg-1.3ubuntu2 [595 kB] 1032s Get:195 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libmbim-proxy armhf 1.31.2-0ubuntu2 [5748 B] 1032s Get:196 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libmbim-glib4 armhf 1.31.2-0ubuntu2 [216 kB] 1032s Get:197 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libjson-glib-1.0-common all 1.8.0-2build1 [4210 B] 1032s Get:198 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libjson-glib-1.0-0 armhf 1.8.0-2build1 [61.2 kB] 1032s Get:199 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libusb-1.0-0 armhf 2:1.0.27-1 [48.7 kB] 1032s Get:200 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgusb2 armhf 0.4.8-1build1 [34.6 kB] 1032s Get:201 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libmm-glib0 armhf 1.23.4-0ubuntu1 [214 kB] 1032s Get:202 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libprotobuf-c1 armhf 1.4.1-1ubuntu3 [17.7 kB] 1032s Get:203 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libbrotli1 armhf 1.1.0-2build1 [319 kB] 1032s Get:204 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libnghttp2-14 armhf 1.59.0-1build1 [68.1 kB] 1032s Get:205 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libssh-4 armhf 0.10.6-2build1 [169 kB] 1032s Get:206 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libibverbs1 armhf 50.0-2build1 [57.9 kB] 1032s Get:207 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libfido2-1 armhf 1.14.0-1build1 [75.8 kB] 1032s Get:208 http://ftpmaster.internal/ubuntu noble-proposed/main armhf coreutils armhf 9.4-3ubuntu3 [1280 kB] 1033s Get:209 http://ftpmaster.internal/ubuntu noble/main armhf debianutils armhf 5.17 [88.9 kB] 1033s Get:210 http://ftpmaster.internal/ubuntu noble-proposed/main armhf util-linux armhf 2.39.3-9ubuntu2 [1216 kB] 1033s Get:211 http://ftpmaster.internal/ubuntu noble-proposed/main armhf curl armhf 8.5.0-2ubuntu8 [219 kB] 1033s Get:212 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libcurl4t64 armhf 8.5.0-2ubuntu8 [296 kB] 1033s Get:213 http://ftpmaster.internal/ubuntu noble-proposed/main armhf file armhf 1:5.45-3 [21.1 kB] 1033s Get:214 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libmagic-mgc armhf 1:5.45-3 [307 kB] 1033s Get:215 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libmagic1t64 armhf 1:5.45-3 [81.4 kB] 1033s Get:216 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libplymouth5 armhf 24.004.60-1ubuntu6 [140 kB] 1033s Get:217 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpng16-16t64 armhf 1.6.43-3 [166 kB] 1033s Get:218 http://ftpmaster.internal/ubuntu noble-proposed/main armhf bind9-host armhf 1:9.18.24-0ubuntu3 [47.4 kB] 1033s Get:219 http://ftpmaster.internal/ubuntu noble-proposed/main armhf bind9-dnsutils armhf 1:9.18.24-0ubuntu3 [149 kB] 1033s Get:220 http://ftpmaster.internal/ubuntu noble-proposed/main armhf bind9-libs armhf 1:9.18.24-0ubuntu3 [1148 kB] 1033s Get:221 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libuv1t64 armhf 1.48.0-1.1 [82.9 kB] 1033s Get:222 http://ftpmaster.internal/ubuntu noble-proposed/main armhf uuid-runtime armhf 2.39.3-9ubuntu2 [41.7 kB] 1033s Get:223 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libdebconfclient0 armhf 0.271ubuntu2 [10.8 kB] 1033s Get:224 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsemanage-common all 3.5-1build4 [10.1 kB] 1033s Get:225 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsemanage2 armhf 3.5-1build4 [84.5 kB] 1033s Get:226 http://ftpmaster.internal/ubuntu noble-proposed/main armhf install-info armhf 7.1-3build1 [60.5 kB] 1033s Get:227 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gcc-13-base armhf 13.2.0-21ubuntu1 [48.3 kB] 1033s Get:228 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libss2 armhf 1.47.0-2.4~exp1ubuntu2 [14.7 kB] 1033s Get:229 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dmsetup armhf 2:1.02.185-3ubuntu2 [81.1 kB] 1033s Get:230 http://ftpmaster.internal/ubuntu noble-proposed/main armhf krb5-locales all 1.20.1-6ubuntu1 [13.8 kB] 1033s Get:231 http://ftpmaster.internal/ubuntu noble/main armhf libbsd0 armhf 0.12.1-1 [36.6 kB] 1033s Get:232 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libglib2.0-data all 2.79.3-3ubuntu5 [46.6 kB] 1033s Get:233 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libslang2 armhf 2.3.3-3build1 [478 kB] 1033s Get:234 http://ftpmaster.internal/ubuntu noble-proposed/main armhf rsyslog armhf 8.2312.0-3ubuntu7 [460 kB] 1033s Get:235 http://ftpmaster.internal/ubuntu noble/main armhf xdg-user-dirs armhf 0.18-1 [17.3 kB] 1033s Get:236 http://ftpmaster.internal/ubuntu noble-proposed/main armhf xxd armhf 2:9.1.0016-1ubuntu6 [62.5 kB] 1033s Get:237 http://ftpmaster.internal/ubuntu noble-proposed/main armhf apparmor armhf 4.0.0-beta3-0ubuntu2 [562 kB] 1033s Get:238 http://ftpmaster.internal/ubuntu noble-proposed/main armhf ftp all 20230507-2build1 [4724 B] 1033s Get:239 http://ftpmaster.internal/ubuntu noble-proposed/main armhf inetutils-telnet armhf 2:2.5-3ubuntu3 [90.7 kB] 1033s Get:240 http://ftpmaster.internal/ubuntu noble-proposed/main armhf info armhf 7.1-3build1 [127 kB] 1033s Get:241 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libxmuu1 armhf 2:1.1.3-3build1 [8004 B] 1033s Get:242 http://ftpmaster.internal/ubuntu noble-proposed/main armhf lshw armhf 02.19.git.2021.06.19.996aaad9c7-2build2 [310 kB] 1033s Get:243 http://ftpmaster.internal/ubuntu noble-proposed/main armhf mtr-tiny armhf 0.95-1.1build1 [51.7 kB] 1033s Get:244 http://ftpmaster.internal/ubuntu noble-proposed/main armhf plymouth-theme-ubuntu-text armhf 24.004.60-1ubuntu6 [9818 B] 1033s Get:245 http://ftpmaster.internal/ubuntu noble-proposed/main armhf plymouth armhf 24.004.60-1ubuntu6 [142 kB] 1033s Get:246 http://ftpmaster.internal/ubuntu noble-proposed/main armhf psmisc armhf 23.7-1 [176 kB] 1033s Get:247 http://ftpmaster.internal/ubuntu noble-proposed/main armhf telnet all 0.17+2.5-3ubuntu3 [3682 B] 1033s Get:248 http://ftpmaster.internal/ubuntu noble-proposed/main armhf xz-utils armhf 5.6.0-0.2 [271 kB] 1033s Get:249 http://ftpmaster.internal/ubuntu noble/main armhf ubuntu-standard armhf 1.536build1 [10.7 kB] 1033s Get:250 http://ftpmaster.internal/ubuntu noble-proposed/main armhf usb.ids all 2024.03.18-1 [223 kB] 1033s Get:251 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libctf-nobfd0 armhf 2.42-4ubuntu1 [88.0 kB] 1033s Get:252 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libctf0 armhf 2.42-4ubuntu1 [87.7 kB] 1033s Get:253 http://ftpmaster.internal/ubuntu noble-proposed/main armhf binutils-arm-linux-gnueabihf armhf 2.42-4ubuntu1 [2925 kB] 1033s Get:254 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libbinutils armhf 2.42-4ubuntu1 [464 kB] 1033s Get:255 http://ftpmaster.internal/ubuntu noble-proposed/main armhf binutils armhf 2.42-4ubuntu1 [3078 B] 1033s Get:256 http://ftpmaster.internal/ubuntu noble-proposed/main armhf binutils-common armhf 2.42-4ubuntu1 [217 kB] 1033s Get:257 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsframe1 armhf 2.42-4ubuntu1 [13.1 kB] 1033s Get:258 http://ftpmaster.internal/ubuntu noble-proposed/main armhf bolt armhf 0.9.6-2build1 [138 kB] 1033s Get:259 http://ftpmaster.internal/ubuntu noble-proposed/main armhf cryptsetup-bin armhf 2:2.7.0-1ubuntu2 [214 kB] 1033s Get:260 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dpkg-dev all 1.22.6ubuntu4 [1074 kB] 1033s Get:261 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libdpkg-perl all 1.22.6ubuntu4 [268 kB] 1033s Get:262 http://ftpmaster.internal/ubuntu noble/main armhf fonts-ubuntu-console all 0.869+git20240321-0ubuntu1 [18.7 kB] 1033s Get:263 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gnupg-l10n all 2.4.4-2ubuntu15 [65.8 kB] 1033s Get:264 http://ftpmaster.internal/ubuntu noble-proposed/main armhf ibverbs-providers armhf 50.0-2build1 [27.4 kB] 1033s Get:265 http://ftpmaster.internal/ubuntu noble-proposed/main armhf jq armhf 1.7.1-3 [65.2 kB] 1033s Get:266 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libjq1 armhf 1.7.1-3 [156 kB] 1033s Get:267 http://ftpmaster.internal/ubuntu noble/main armhf libatm1t64 armhf 1:2.5.1-5.1 [20.0 kB] 1033s Get:268 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libevent-core-2.1-7 armhf 2.1.12-stable-9build1 [82.3 kB] 1033s Get:269 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libftdi1-2 armhf 1.5-6build4 [25.7 kB] 1033s Get:270 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libldap-common all 2.6.7+dfsg-1~exp1ubuntu6 [31.3 kB] 1033s Get:271 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsasl2-modules armhf 2.1.28+dfsg1-5ubuntu1 [61.3 kB] 1033s Get:272 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-distutils all 3.12.2-3ubuntu1.1 [133 kB] 1033s Get:273 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-lib2to3 all 3.12.2-3ubuntu1.1 [79.1 kB] 1033s Get:274 http://ftpmaster.internal/ubuntu noble/main armhf python3-markupsafe armhf 2.1.5-1build1 [12.1 kB] 1033s Get:275 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-pyrsistent armhf 0.20.0-1build1 [53.0 kB] 1033s Get:276 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-typing-extensions all 4.10.0-1 [60.7 kB] 1033s Get:277 http://ftpmaster.internal/ubuntu noble/main armhf cloud-init all 24.1.2-0ubuntu1 [597 kB] 1033s Get:278 http://ftpmaster.internal/ubuntu noble-proposed/main armhf kpartx armhf 0.9.4-5ubuntu6 [31.5 kB] 1037s Preconfiguring packages ... 1037s Fetched 109 MB in 8s (13.7 MB/s) 1037s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58620 files and directories currently installed.) 1037s Preparing to unpack .../motd-news-config_13ubuntu8_all.deb ... 1037s Unpacking motd-news-config (13ubuntu8) over (13ubuntu7) ... 1037s Preparing to unpack .../gcc-14-base_14-20240315-1ubuntu1_armhf.deb ... 1037s Unpacking gcc-14-base:armhf (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 1037s Setting up gcc-14-base:armhf (14-20240315-1ubuntu1) ... 1037s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58620 files and directories currently installed.) 1037s Preparing to unpack .../libgcc-s1_14-20240315-1ubuntu1_armhf.deb ... 1037s Unpacking libgcc-s1:armhf (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 1037s Setting up libgcc-s1:armhf (14-20240315-1ubuntu1) ... 1038s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58620 files and directories currently installed.) 1038s Preparing to unpack .../libstdc++6_14-20240315-1ubuntu1_armhf.deb ... 1038s Unpacking libstdc++6:armhf (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 1038s Setting up libstdc++6:armhf (14-20240315-1ubuntu1) ... 1038s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58620 files and directories currently installed.) 1038s Preparing to unpack .../libc6_2.39-0ubuntu6_armhf.deb ... 1038s Unpacking libc6:armhf (2.39-0ubuntu6) over (2.39-0ubuntu2) ... 1038s Setting up libc6:armhf (2.39-0ubuntu6) ... 1039s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58620 files and directories currently installed.) 1039s Preparing to unpack .../base-files_13ubuntu8_armhf.deb ... 1039s Unpacking base-files (13ubuntu8) over (13ubuntu7) ... 1039s Setting up base-files (13ubuntu8) ... 1041s motd-news.service is a disabled or a static unit not running, not starting it. 1041s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58620 files and directories currently installed.) 1041s Preparing to unpack .../bsdutils_1%3a2.39.3-9ubuntu2_armhf.deb ... 1041s Unpacking bsdutils (1:2.39.3-9ubuntu2) over (1:2.39.3-6ubuntu2) ... 1041s Setting up bsdutils (1:2.39.3-9ubuntu2) ... 1041s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58620 files and directories currently installed.) 1041s Preparing to unpack .../openssl_3.0.13-0ubuntu2_armhf.deb ... 1041s Unpacking openssl (3.0.13-0ubuntu2) over (3.0.10-1ubuntu4) ... 1041s Preparing to unpack .../zlib1g_1%3a1.3.dfsg-3.1ubuntu1_armhf.deb ... 1041s Unpacking zlib1g:armhf (1:1.3.dfsg-3.1ubuntu1) over (1:1.3.dfsg-3ubuntu1) ... 1041s Setting up zlib1g:armhf (1:1.3.dfsg-3.1ubuntu1) ... 1041s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58620 files and directories currently installed.) 1041s Preparing to unpack .../0-librtmp1_2.4+20151223.gitfa8646d.1-2build6_armhf.deb ... 1041s Unpacking librtmp1:armhf (2.4+20151223.gitfa8646d.1-2build6) over (2.4+20151223.gitfa8646d.1-2build4) ... 1041s Preparing to unpack .../1-python3.12_3.12.2-4build3_armhf.deb ... 1042s Unpacking python3.12 (3.12.2-4build3) over (3.12.2-1) ... 1042s Preparing to unpack .../2-libexpat1_2.6.1-2_armhf.deb ... 1042s Unpacking libexpat1:armhf (2.6.1-2) over (2.6.0-1) ... 1042s Preparing to unpack .../3-python3.12-minimal_3.12.2-4build3_armhf.deb ... 1042s Unpacking python3.12-minimal (3.12.2-4build3) over (3.12.2-1) ... 1042s Preparing to unpack .../4-libpython3.12-stdlib_3.12.2-4build3_armhf.deb ... 1042s Unpacking libpython3.12-stdlib:armhf (3.12.2-4build3) over (3.12.2-1) ... 1042s Preparing to unpack .../5-libpython3.12-minimal_3.12.2-4build3_armhf.deb ... 1042s Unpacking libpython3.12-minimal:armhf (3.12.2-4build3) over (3.12.2-1) ... 1043s Preparing to unpack .../6-parted_3.6-3.1build2_armhf.deb ... 1043s Unpacking parted (3.6-3.1build2) over (3.6-3) ... 1043s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58618 files and directories currently installed.) 1043s Removing libparted2:armhf (3.6-3) ... 1043s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58612 files and directories currently installed.) 1043s Preparing to unpack .../libblkid1_2.39.3-9ubuntu2_armhf.deb ... 1043s Unpacking libblkid1:armhf (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 1043s Setting up libblkid1:armhf (2.39.3-9ubuntu2) ... 1043s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58612 files and directories currently installed.) 1043s Preparing to unpack .../libselinux1_3.5-2ubuntu1_armhf.deb ... 1043s Unpacking libselinux1:armhf (3.5-2ubuntu1) over (3.5-2build1) ... 1043s Setting up libselinux1:armhf (3.5-2ubuntu1) ... 1043s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58612 files and directories currently installed.) 1043s Preparing to unpack .../systemd-dev_255.4-1ubuntu5_all.deb ... 1043s Unpacking systemd-dev (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 1043s Preparing to unpack .../systemd-timesyncd_255.4-1ubuntu5_armhf.deb ... 1043s Unpacking systemd-timesyncd (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 1043s Preparing to unpack .../dbus-session-bus-common_1.14.10-4ubuntu2_all.deb ... 1043s Unpacking dbus-session-bus-common (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 1043s Preparing to unpack .../libaudit-common_1%3a3.1.2-2.1_all.deb ... 1043s Unpacking libaudit-common (1:3.1.2-2.1) over (1:3.1.2-2) ... 1044s Setting up libaudit-common (1:3.1.2-2.1) ... 1044s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58612 files and directories currently installed.) 1044s Preparing to unpack .../libcap-ng0_0.8.4-2build1_armhf.deb ... 1044s Unpacking libcap-ng0:armhf (0.8.4-2build1) over (0.8.4-2) ... 1044s Setting up libcap-ng0:armhf (0.8.4-2build1) ... 1044s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58612 files and directories currently installed.) 1044s Preparing to unpack .../libaudit1_1%3a3.1.2-2.1_armhf.deb ... 1044s Unpacking libaudit1:armhf (1:3.1.2-2.1) over (1:3.1.2-2) ... 1044s Setting up libaudit1:armhf (1:3.1.2-2.1) ... 1044s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58612 files and directories currently installed.) 1044s Preparing to unpack .../libpam0g_1.5.3-5ubuntu3_armhf.deb ... 1044s Unpacking libpam0g:armhf (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 1044s Setting up libpam0g:armhf (1.5.3-5ubuntu3) ... 1044s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58612 files and directories currently installed.) 1044s Preparing to unpack .../liblzma5_5.6.0-0.2_armhf.deb ... 1044s Unpacking liblzma5:armhf (5.6.0-0.2) over (5.4.5-0.3) ... 1044s Setting up liblzma5:armhf (5.6.0-0.2) ... 1045s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58612 files and directories currently installed.) 1045s Preparing to unpack .../0-libldap2_2.6.7+dfsg-1~exp1ubuntu6_armhf.deb ... 1045s Unpacking libldap2:armhf (2.6.7+dfsg-1~exp1ubuntu6) over (2.6.7+dfsg-1~exp1ubuntu1) ... 1045s Preparing to unpack .../1-libudisks2-0_2.10.1-6_armhf.deb ... 1045s Unpacking libudisks2-0:armhf (2.10.1-6) over (2.10.1-1ubuntu2) ... 1045s Preparing to unpack .../2-udisks2_2.10.1-6_armhf.deb ... 1045s Unpacking udisks2 (2.10.1-6) over (2.10.1-1ubuntu2) ... 1045s Preparing to unpack .../3-shared-mime-info_2.4-1build1_armhf.deb ... 1045s Unpacking shared-mime-info (2.4-1build1) over (2.4-1) ... 1045s Preparing to unpack .../4-gir1.2-girepository-2.0_1.79.1-1ubuntu6_armhf.deb ... 1045s Unpacking gir1.2-girepository-2.0:armhf (1.79.1-1ubuntu6) over (1.79.1-1) ... 1045s Preparing to unpack .../5-gir1.2-glib-2.0_2.79.3-3ubuntu5_armhf.deb ... 1045s Unpacking gir1.2-glib-2.0:armhf (2.79.3-3ubuntu5) over (2.79.2-1~ubuntu1) ... 1045s Preparing to unpack .../6-libgirepository-1.0-1_1.79.1-1ubuntu6_armhf.deb ... 1045s Unpacking libgirepository-1.0-1:armhf (1.79.1-1ubuntu6) over (1.79.1-1) ... 1045s Preparing to unpack .../7-python3-gi_3.47.0-3build1_armhf.deb ... 1046s Unpacking python3-gi (3.47.0-3build1) over (3.47.0-3) ... 1046s Preparing to unpack .../8-python3-dbus_1.3.2-5build2_armhf.deb ... 1046s Unpacking python3-dbus (1.3.2-5build2) over (1.3.2-5build1) ... 1046s dpkg: libgpgme11:armhf: dependency problems, but removing anyway as you requested: 1046s libvolume-key1:armhf depends on libgpgme11 (>= 1.4.1). 1046s libjcat1:armhf depends on libgpgme11 (>= 1.2.0). 1046s 1046s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58609 files and directories currently installed.) 1046s Removing libgpgme11:armhf (1.18.0-4ubuntu1) ... 1046s Selecting previously unselected package libgpgme11t64:armhf. 1046s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58603 files and directories currently installed.) 1046s Preparing to unpack .../00-libgpgme11t64_1.18.0-4.1ubuntu3_armhf.deb ... 1046s Unpacking libgpgme11t64:armhf (1.18.0-4.1ubuntu3) ... 1046s Preparing to unpack .../01-libvolume-key1_0.3.12-7build1_armhf.deb ... 1046s Unpacking libvolume-key1:armhf (0.3.12-7build1) over (0.3.12-5build2) ... 1046s Selecting previously unselected package libnetplan1:armhf. 1046s Preparing to unpack .../02-libnetplan1_1.0-1_armhf.deb ... 1046s Unpacking libnetplan1:armhf (1.0-1) ... 1046s Preparing to unpack .../03-python3-netplan_1.0-1_armhf.deb ... 1046s Unpacking python3-netplan (1.0-1) over (0.107.1-3) ... 1046s Preparing to unpack .../04-netplan-generator_1.0-1_armhf.deb ... 1046s Adding 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 1046s Unpacking netplan-generator (1.0-1) over (0.107.1-3) ... 1047s Preparing to unpack .../05-initramfs-tools-bin_0.142ubuntu23_armhf.deb ... 1047s Unpacking initramfs-tools-bin (0.142ubuntu23) over (0.142ubuntu20) ... 1047s Preparing to unpack .../06-initramfs-tools-core_0.142ubuntu23_all.deb ... 1047s Unpacking initramfs-tools-core (0.142ubuntu23) over (0.142ubuntu20) ... 1047s Preparing to unpack .../07-ubuntu-minimal_1.536build1_armhf.deb ... 1047s Unpacking ubuntu-minimal (1.536build1) over (1.536) ... 1047s Preparing to unpack .../08-initramfs-tools_0.142ubuntu23_all.deb ... 1047s Unpacking initramfs-tools (0.142ubuntu23) over (0.142ubuntu20) ... 1047s Preparing to unpack .../09-netplan.io_1.0-1_armhf.deb ... 1047s Unpacking netplan.io (1.0-1) over (0.107.1-3) ... 1047s Preparing to unpack .../10-libxmlb2_0.3.15-1build1_armhf.deb ... 1047s Unpacking libxmlb2:armhf (0.3.15-1build1) over (0.3.15-1) ... 1047s Preparing to unpack .../11-libqrtr-glib0_1.2.2-1ubuntu3_armhf.deb ... 1047s Unpacking libqrtr-glib0:armhf (1.2.2-1ubuntu3) over (1.2.2-1ubuntu2) ... 1047s Preparing to unpack .../12-libqmi-glib5_1.35.2-0ubuntu1_armhf.deb ... 1047s Unpacking libqmi-glib5:armhf (1.35.2-0ubuntu1) over (1.34.0-2) ... 1047s Preparing to unpack .../13-libqmi-proxy_1.35.2-0ubuntu1_armhf.deb ... 1047s Unpacking libqmi-proxy (1.35.2-0ubuntu1) over (1.34.0-2) ... 1047s Preparing to unpack .../14-libpolkit-agent-1-0_124-1ubuntu1_armhf.deb ... 1047s Unpacking libpolkit-agent-1-0:armhf (124-1ubuntu1) over (124-1) ... 1047s Preparing to unpack .../15-libpolkit-gobject-1-0_124-1ubuntu1_armhf.deb ... 1047s Unpacking libpolkit-gobject-1-0:armhf (124-1ubuntu1) over (124-1) ... 1048s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58617 files and directories currently installed.) 1048s Removing libnetplan0:armhf (0.107.1-3) ... 1048s dpkg: libglib2.0-0:armhf: dependency problems, but removing anyway as you requested: 1048s libmm-glib0:armhf depends on libglib2.0-0 (>= 2.62.0). 1048s libmbim-proxy depends on libglib2.0-0 (>= 2.56). 1048s libmbim-glib4:armhf depends on libglib2.0-0 (>= 2.56). 1048s libjson-glib-1.0-0:armhf depends on libglib2.0-0 (>= 2.75.3). 1048s libjcat1:armhf depends on libglib2.0-0 (>= 2.75.3). 1048s libgusb2:armhf depends on libglib2.0-0 (>= 2.75.3). 1048s libgudev-1.0-0:armhf depends on libglib2.0-0 (>= 2.38.0). 1048s libfwupd2:armhf depends on libglib2.0-0 (>= 2.79.0). 1048s libblockdev3:armhf depends on libglib2.0-0 (>= 2.42.2). 1048s libblockdev-utils3:armhf depends on libglib2.0-0 (>= 2.75.3). 1048s libblockdev-swap3:armhf depends on libglib2.0-0 (>= 2.42.2). 1048s libblockdev-part3:armhf depends on libglib2.0-0 (>= 2.42.2). 1048s libblockdev-nvme3:armhf depends on libglib2.0-0 (>= 2.42.2). 1048s libblockdev-mdraid3:armhf depends on libglib2.0-0 (>= 2.42.2). 1048s libblockdev-loop3:armhf depends on libglib2.0-0 (>= 2.42.2). 1048s libblockdev-fs3:armhf depends on libglib2.0-0 (>= 2.42.2). 1048s libblockdev-crypto3:armhf depends on libglib2.0-0 (>= 2.42.2). 1048s fwupd depends on libglib2.0-0 (>= 2.79.0). 1048s bolt depends on libglib2.0-0 (>= 2.56.0). 1048s 1048s Removing libglib2.0-0:armhf (2.79.2-1~ubuntu1) ... 1048s Selecting previously unselected package libglib2.0-0t64:armhf. 1048s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58588 files and directories currently installed.) 1048s Preparing to unpack .../libglib2.0-0t64_2.79.3-3ubuntu5_armhf.deb ... 1048s libglib2.0-0t64.preinst: Removing /var/lib/dpkg/info/libglib2.0-0:armhf.postrm to avoid loss of /usr/share/glib-2.0/schemas/gschemas.compiled... 1048s removed '/var/lib/dpkg/info/libglib2.0-0:armhf.postrm' 1048s Unpacking libglib2.0-0t64:armhf (2.79.3-3ubuntu5) ... 1048s Preparing to unpack .../libjcat1_0.2.0-2build2_armhf.deb ... 1048s Unpacking libjcat1:armhf (0.2.0-2build2) over (0.2.0-2) ... 1048s dpkg: libarchive13:armhf: dependency problems, but removing anyway as you requested: 1048s fwupd depends on libarchive13 (>= 3.2.1). 1048s 1048s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58613 files and directories currently installed.) 1048s Removing libarchive13:armhf (3.7.2-1ubuntu2) ... 1048s Selecting previously unselected package libarchive13t64:armhf. 1048s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58607 files and directories currently installed.) 1048s Preparing to unpack .../00-libarchive13t64_3.7.2-1.1ubuntu2_armhf.deb ... 1048s Unpacking libarchive13t64:armhf (3.7.2-1.1ubuntu2) ... 1048s Preparing to unpack .../01-fwupd_1.9.15-2_armhf.deb ... 1049s Unpacking fwupd (1.9.15-2) over (1.9.14-1) ... 1049s Preparing to unpack .../02-ubuntu-pro-client-l10n_31.2.2_armhf.deb ... 1049s Unpacking ubuntu-pro-client-l10n (31.2.2) over (31.1) ... 1049s Preparing to unpack .../03-ubuntu-pro-client_31.2.2_armhf.deb ... 1049s Unpacking ubuntu-pro-client (31.2.2) over (31.1) ... 1049s Preparing to unpack .../04-python3.11_3.11.8-1build4_armhf.deb ... 1049s Unpacking python3.11 (3.11.8-1build4) over (3.11.8-1) ... 1050s Preparing to unpack .../05-python3.11-minimal_3.11.8-1build4_armhf.deb ... 1050s Unpacking python3.11-minimal (3.11.8-1build4) over (3.11.8-1) ... 1050s Preparing to unpack .../06-libpython3.11-minimal_3.11.8-1build4_armhf.deb ... 1050s Unpacking libpython3.11-minimal:armhf (3.11.8-1build4) over (3.11.8-1) ... 1050s Preparing to unpack .../07-libsasl2-modules-db_2.1.28+dfsg1-5ubuntu1_armhf.deb ... 1050s Unpacking libsasl2-modules-db:armhf (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 1050s Preparing to unpack .../08-libtext-iconv-perl_1.7-8build2_armhf.deb ... 1050s Unpacking libtext-iconv-perl:armhf (1.7-8build2) over (1.7-8build1) ... 1050s Preparing to unpack .../09-libtext-charwidth-perl_0.04-11build2_armhf.deb ... 1050s Unpacking libtext-charwidth-perl:armhf (0.04-11build2) over (0.04-11build1) ... 1050s Preparing to unpack .../10-perl-base_5.38.2-3.2_armhf.deb ... 1050s Unpacking perl-base (5.38.2-3.2) over (5.38.2-3) ... 1051s Setting up perl-base (5.38.2-3.2) ... 1051s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58614 files and directories currently installed.) 1051s Preparing to unpack .../liblocale-gettext-perl_1.07-6ubuntu4_armhf.deb ... 1051s Unpacking liblocale-gettext-perl (1.07-6ubuntu4) over (1.07-6build1) ... 1051s Preparing to unpack .../perl-modules-5.38_5.38.2-3.2_all.deb ... 1051s Unpacking perl-modules-5.38 (5.38.2-3.2) over (5.38.2-3) ... 1052s Preparing to unpack .../python3-gdbm_3.12.2-3ubuntu1.1_armhf.deb ... 1052s Unpacking python3-gdbm:armhf (3.12.2-3ubuntu1.1) over (3.11.5-1) ... 1052s Preparing to unpack .../man-db_2.12.0-3build4_armhf.deb ... 1052s Unpacking man-db (2.12.0-3build4) over (2.12.0-3) ... 1052s dpkg: libgdbm-compat4:armhf: dependency problems, but removing anyway as you requested: 1052s libperl5.38:armhf depends on libgdbm-compat4 (>= 1.18-3). 1052s 1052s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58614 files and directories currently installed.) 1052s Removing libgdbm-compat4:armhf (1.23-5) ... 1052s dpkg: libgdbm6:armhf: dependency problems, but removing anyway as you requested: 1052s libperl5.38:armhf depends on libgdbm6 (>= 1.21). 1052s 1052s Removing libgdbm6:armhf (1.23-5) ... 1052s Selecting previously unselected package libgdbm6t64:armhf. 1052s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58604 files and directories currently installed.) 1052s Preparing to unpack .../libgdbm6t64_1.23-5.1_armhf.deb ... 1052s Unpacking libgdbm6t64:armhf (1.23-5.1) ... 1052s Selecting previously unselected package libgdbm-compat4t64:armhf. 1052s Preparing to unpack .../libgdbm-compat4t64_1.23-5.1_armhf.deb ... 1052s Unpacking libgdbm-compat4t64:armhf (1.23-5.1) ... 1053s dpkg: libperl5.38:armhf: dependency problems, but removing anyway as you requested: 1053s perl depends on libperl5.38 (= 5.38.2-3). 1053s 1053s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58616 files and directories currently installed.) 1053s Removing libperl5.38:armhf (5.38.2-3) ... 1053s Selecting previously unselected package libperl5.38t64:armhf. 1053s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58097 files and directories currently installed.) 1053s Preparing to unpack .../libperl5.38t64_5.38.2-3.2_armhf.deb ... 1053s Unpacking libperl5.38t64:armhf (5.38.2-3.2) ... 1053s Preparing to unpack .../perl_5.38.2-3.2_armhf.deb ... 1053s Unpacking perl (5.38.2-3.2) over (5.38.2-3) ... 1053s dpkg: libdb5.3:armhf: dependency problems, but removing anyway as you requested: 1053s libpython3.11-stdlib:armhf depends on libdb5.3. 1053s libpam-modules:armhf depends on libdb5.3. 1053s iproute2 depends on libdb5.3. 1053s apt-utils depends on libdb5.3. 1053s 1053s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58616 files and directories currently installed.) 1053s Removing libdb5.3:armhf (5.3.28+dfsg2-4) ... 1053s Selecting previously unselected package libdb5.3t64:armhf. 1054s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58610 files and directories currently installed.) 1054s Preparing to unpack .../libdb5.3t64_5.3.28+dfsg2-6_armhf.deb ... 1054s Unpacking libdb5.3t64:armhf (5.3.28+dfsg2-6) ... 1054s Preparing to unpack .../libpython3.11-stdlib_3.11.8-1build4_armhf.deb ... 1054s Unpacking libpython3.11-stdlib:armhf (3.11.8-1build4) over (3.11.8-1) ... 1054s Preparing to unpack .../keyboxd_2.4.4-2ubuntu15_armhf.deb ... 1054s Unpacking keyboxd (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 1054s dpkg: libnpth0:armhf: dependency problems, but removing anyway as you requested: 1054s gpgv depends on libnpth0 (>= 0.90). 1054s gpgsm depends on libnpth0 (>= 0.90). 1054s gpg-agent depends on libnpth0 (>= 0.90). 1054s gpg depends on libnpth0 (>= 0.90). 1054s dirmngr depends on libnpth0 (>= 0.90). 1054s 1054s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58614 files and directories currently installed.) 1054s Removing libnpth0:armhf (1.6-3build2) ... 1054s Selecting previously unselected package libnpth0t64:armhf. 1054s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58609 files and directories currently installed.) 1054s Preparing to unpack .../libnpth0t64_1.6-3.1_armhf.deb ... 1054s Unpacking libnpth0t64:armhf (1.6-3.1) ... 1054s Setting up libnpth0t64:armhf (1.6-3.1) ... 1054s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58615 files and directories currently installed.) 1054s Preparing to unpack .../gpgv_2.4.4-2ubuntu15_armhf.deb ... 1054s Unpacking gpgv (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 1054s Setting up gpgv (2.4.4-2ubuntu15) ... 1055s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58615 files and directories currently installed.) 1055s Preparing to unpack .../gpg_2.4.4-2ubuntu15_armhf.deb ... 1055s Unpacking gpg (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 1055s Preparing to unpack .../gpg-wks-client_2.4.4-2ubuntu15_armhf.deb ... 1055s Unpacking gpg-wks-client (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 1055s Preparing to unpack .../gnupg-utils_2.4.4-2ubuntu15_armhf.deb ... 1055s Unpacking gnupg-utils (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 1055s Preparing to unpack .../gpg-agent_2.4.4-2ubuntu15_armhf.deb ... 1055s Unpacking gpg-agent (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 1055s Preparing to unpack .../gpgsm_2.4.4-2ubuntu15_armhf.deb ... 1055s Unpacking gpgsm (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 1055s dpkg: libreadline8:armhf: dependency problems, but removing anyway as you requested: 1055s gpgconf depends on libreadline8 (>= 6.0). 1055s gawk depends on libreadline8 (>= 6.0). 1055s fdisk depends on libreadline8 (>= 6.0). 1055s 1055s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58615 files and directories currently installed.) 1055s Removing libreadline8:armhf (8.2-3) ... 1055s Selecting previously unselected package libreadline8t64:armhf. 1055s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58603 files and directories currently installed.) 1055s Preparing to unpack .../libreadline8t64_8.2-4_armhf.deb ... 1055s Adding 'diversion of /lib/arm-linux-gnueabihf/libhistory.so.8 to /lib/arm-linux-gnueabihf/libhistory.so.8.usr-is-merged by libreadline8t64' 1055s Adding 'diversion of /lib/arm-linux-gnueabihf/libhistory.so.8.2 to /lib/arm-linux-gnueabihf/libhistory.so.8.2.usr-is-merged by libreadline8t64' 1055s Adding 'diversion of /lib/arm-linux-gnueabihf/libreadline.so.8 to /lib/arm-linux-gnueabihf/libreadline.so.8.usr-is-merged by libreadline8t64' 1055s Adding 'diversion of /lib/arm-linux-gnueabihf/libreadline.so.8.2 to /lib/arm-linux-gnueabihf/libreadline.so.8.2.usr-is-merged by libreadline8t64' 1055s Unpacking libreadline8t64:armhf (8.2-4) ... 1055s Setting up libreadline8t64:armhf (8.2-4) ... 1055s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58623 files and directories currently installed.) 1055s Preparing to unpack .../0-gawk_1%3a5.2.1-2build2_armhf.deb ... 1055s Unpacking gawk (1:5.2.1-2build2) over (1:5.2.1-2) ... 1055s Preparing to unpack .../1-fdisk_2.39.3-9ubuntu2_armhf.deb ... 1055s Unpacking fdisk (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 1055s Preparing to unpack .../2-gpgconf_2.4.4-2ubuntu15_armhf.deb ... 1055s Unpacking gpgconf (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 1056s Preparing to unpack .../3-dirmngr_2.4.4-2ubuntu15_armhf.deb ... 1056s Unpacking dirmngr (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 1056s Preparing to unpack .../4-gnupg_2.4.4-2ubuntu15_all.deb ... 1056s Unpacking gnupg (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 1056s Preparing to unpack .../5-python3-apt_2.7.7_armhf.deb ... 1056s Unpacking python3-apt (2.7.7) over (2.7.6) ... 1056s Preparing to unpack .../6-apt-utils_2.7.14_armhf.deb ... 1056s Unpacking apt-utils (2.7.14) over (2.7.12) ... 1056s dpkg: libapt-pkg6.0:armhf: dependency problems, but removing anyway as you requested: 1056s apt depends on libapt-pkg6.0 (>= 2.7.12). 1056s 1056s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58621 files and directories currently installed.) 1056s Removing libapt-pkg6.0:armhf (2.7.12) ... 1056s dpkg: libnettle8:armhf: dependency problems, but removing anyway as you requested: 1056s libhogweed6:armhf depends on libnettle8. 1056s libgnutls30:armhf depends on libnettle8 (>= 3.9~). 1056s libcurl3-gnutls:armhf depends on libnettle8. 1056s 1056s Removing libnettle8:armhf (3.9.1-2) ... 1056s Selecting previously unselected package libapt-pkg6.0t64:armhf. 1056s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58565 files and directories currently installed.) 1056s Preparing to unpack .../libapt-pkg6.0t64_2.7.14_armhf.deb ... 1056s Unpacking libapt-pkg6.0t64:armhf (2.7.14) ... 1056s Setting up libapt-pkg6.0t64:armhf (2.7.14) ... 1056s Selecting previously unselected package libnettle8t64:armhf. 1057s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58615 files and directories currently installed.) 1057s Preparing to unpack .../libnettle8t64_3.9.1-2.2_armhf.deb ... 1057s Unpacking libnettle8t64:armhf (3.9.1-2.2) ... 1057s Setting up libnettle8t64:armhf (3.9.1-2.2) ... 1057s dpkg: libhogweed6:armhf: dependency problems, but removing anyway as you requested: 1057s libgnutls30:armhf depends on libhogweed6 (>= 3.6). 1057s 1057s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58623 files and directories currently installed.) 1057s Removing libhogweed6:armhf (3.9.1-2) ... 1057s Selecting previously unselected package libhogweed6t64:armhf. 1057s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58618 files and directories currently installed.) 1057s Preparing to unpack .../libhogweed6t64_3.9.1-2.2_armhf.deb ... 1057s Unpacking libhogweed6t64:armhf (3.9.1-2.2) ... 1057s Setting up libhogweed6t64:armhf (3.9.1-2.2) ... 1057s dpkg: libgnutls30:armhf: dependency problems, but removing anyway as you requested: 1057s libcurl3-gnutls:armhf depends on libgnutls30 (>= 3.8.2). 1057s apt depends on libgnutls30 (>= 3.8.1). 1057s 1057s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58624 files and directories currently installed.) 1057s Removing libgnutls30:armhf (3.8.3-1ubuntu1) ... 1057s Selecting previously unselected package libgnutls30t64:armhf. 1057s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58615 files and directories currently installed.) 1057s Preparing to unpack .../libgnutls30t64_3.8.3-1.1ubuntu2_armhf.deb ... 1057s Unpacking libgnutls30t64:armhf (3.8.3-1.1ubuntu2) ... 1057s Setting up libgnutls30t64:armhf (3.8.3-1.1ubuntu2) ... 1057s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58643 files and directories currently installed.) 1057s Preparing to unpack .../archives/apt_2.7.14_armhf.deb ... 1057s Unpacking apt (2.7.14) over (2.7.12) ... 1058s Setting up apt (2.7.14) ... 1059s dpkg: libcurl3-gnutls:armhf: dependency problems, but removing anyway as you requested: 1059s libfwupd2:armhf depends on libcurl3-gnutls (>= 7.63.0). 1059s 1059s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58643 files and directories currently installed.) 1059s Removing libcurl3-gnutls:armhf (8.5.0-2ubuntu2) ... 1059s Selecting previously unselected package libcurl3t64-gnutls:armhf. 1059s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58636 files and directories currently installed.) 1059s Preparing to unpack .../libcurl3t64-gnutls_8.5.0-2ubuntu8_armhf.deb ... 1059s Unpacking libcurl3t64-gnutls:armhf (8.5.0-2ubuntu8) ... 1059s Preparing to unpack .../libfwupd2_1.9.15-2_armhf.deb ... 1059s Unpacking libfwupd2:armhf (1.9.15-2) over (1.9.14-1) ... 1059s dpkg: libpsl5:armhf: dependency problems, but removing anyway as you requested: 1059s wget depends on libpsl5 (>= 0.16.0). 1059s libcurl4:armhf depends on libpsl5 (>= 0.16.0). 1059s 1059s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58643 files and directories currently installed.) 1059s Removing libpsl5:armhf (0.21.2-1build1) ... 1059s Selecting previously unselected package libpsl5t64:armhf. 1059s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58638 files and directories currently installed.) 1059s Preparing to unpack .../libpsl5t64_0.21.2-1.1_armhf.deb ... 1059s Unpacking libpsl5t64:armhf (0.21.2-1.1) ... 1059s Preparing to unpack .../wget_1.21.4-1ubuntu2_armhf.deb ... 1059s Unpacking wget (1.21.4-1ubuntu2) over (1.21.4-1ubuntu1) ... 1059s Preparing to unpack .../tnftp_20230507-2build1_armhf.deb ... 1059s Unpacking tnftp (20230507-2build1) over (20230507-2) ... 1059s dpkg: libpcap0.8:armhf: dependency problems, but removing anyway as you requested: 1059s tcpdump depends on libpcap0.8 (>= 1.9.1). 1059s 1060s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58644 files and directories currently installed.) 1060s Removing libpcap0.8:armhf (1.10.4-4ubuntu3) ... 1060s Selecting previously unselected package libpcap0.8t64:armhf. 1060s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58633 files and directories currently installed.) 1060s Preparing to unpack .../00-libpcap0.8t64_1.10.4-4.1ubuntu2_armhf.deb ... 1060s Unpacking libpcap0.8t64:armhf (1.10.4-4.1ubuntu2) ... 1060s Preparing to unpack .../01-tcpdump_4.99.4-3ubuntu2_armhf.deb ... 1060s Unpacking tcpdump (4.99.4-3ubuntu2) over (4.99.4-3ubuntu1) ... 1060s Preparing to unpack .../02-libsystemd-shared_255.4-1ubuntu5_armhf.deb ... 1060s Unpacking libsystemd-shared:armhf (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 1060s Preparing to unpack .../03-systemd-resolved_255.4-1ubuntu5_armhf.deb ... 1060s Unpacking systemd-resolved (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 1060s Preparing to unpack .../04-sudo_1.9.15p5-3ubuntu3_armhf.deb ... 1060s Unpacking sudo (1.9.15p5-3ubuntu3) over (1.9.15p5-3ubuntu1) ... 1060s Preparing to unpack .../05-rsync_3.2.7-1build1_armhf.deb ... 1060s Unpacking rsync (3.2.7-1build1) over (3.2.7-1) ... 1060s Preparing to unpack .../06-python3-cryptography_41.0.7-4build2_armhf.deb ... 1060s Unpacking python3-cryptography (41.0.7-4build2) over (41.0.7-3) ... 1061s Preparing to unpack .../07-openssh-sftp-server_1%3a9.6p1-3ubuntu11_armhf.deb ... 1061s Unpacking openssh-sftp-server (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 1061s Preparing to unpack .../08-openssh-client_1%3a9.6p1-3ubuntu11_armhf.deb ... 1061s Unpacking openssh-client (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 1061s Preparing to unpack .../09-openssh-server_1%3a9.6p1-3ubuntu11_armhf.deb ... 1061s Unpacking openssh-server (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 1061s Selecting previously unselected package linux-headers-6.8.0-20. 1061s Preparing to unpack .../10-linux-headers-6.8.0-20_6.8.0-20.20_all.deb ... 1061s Unpacking linux-headers-6.8.0-20 (6.8.0-20.20) ... 1068s Selecting previously unselected package linux-headers-6.8.0-20-generic. 1068s Preparing to unpack .../11-linux-headers-6.8.0-20-generic_6.8.0-20.20_armhf.deb ... 1068s Unpacking linux-headers-6.8.0-20-generic (6.8.0-20.20) ... 1071s Preparing to unpack .../12-linux-headers-generic_6.8.0-20.20+1_armhf.deb ... 1071s Unpacking linux-headers-generic (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 1071s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 89796 files and directories currently installed.) 1071s Removing linux-headers-6.8.0-11-generic (6.8.0-11.11) ... 1073s dpkg: libssl3:armhf: dependency problems, but removing anyway as you requested: 1073s systemd depends on libssl3 (>= 3.0.0). 1073s libssh-4:armhf depends on libssl3 (>= 3.0.0). 1073s libsasl2-modules:armhf depends on libssl3 (>= 3.0.0). 1073s libsasl2-2:armhf depends on libssl3 (>= 3.0.0). 1073s libnvme1 depends on libssl3 (>= 3.0.0). 1073s libkrb5-3:armhf depends on libssl3 (>= 3.0.0). 1073s libkmod2:armhf depends on libssl3 (>= 3.0.0). 1073s libfido2-1:armhf depends on libssl3 (>= 3.0.0). 1073s libcurl4:armhf depends on libssl3 (>= 3.0.0). 1073s libcryptsetup12:armhf depends on libssl3 (>= 3.0.0). 1073s kmod depends on libssl3 (>= 3.0.0). 1073s dhcpcd-base depends on libssl3 (>= 3.0.0). 1073s bind9-libs:armhf depends on libssl3 (>= 3.0.0). 1073s 1073s Removing libssl3:armhf (3.0.10-1ubuntu4) ... 1073s Selecting previously unselected package libssl3t64:armhf. 1073s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78646 files and directories currently installed.) 1073s Preparing to unpack .../libssl3t64_3.0.13-0ubuntu2_armhf.deb ... 1073s Unpacking libssl3t64:armhf (3.0.13-0ubuntu2) ... 1073s Setting up libssl3t64:armhf (3.0.13-0ubuntu2) ... 1073s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78659 files and directories currently installed.) 1073s Preparing to unpack .../libudev1_255.4-1ubuntu5_armhf.deb ... 1073s Unpacking libudev1:armhf (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 1073s Setting up libudev1:armhf (255.4-1ubuntu5) ... 1073s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78659 files and directories currently installed.) 1073s Preparing to unpack .../systemd_255.4-1ubuntu5_armhf.deb ... 1073s Unpacking systemd (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 1074s Preparing to unpack .../udev_255.4-1ubuntu5_armhf.deb ... 1074s Unpacking udev (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 1074s Preparing to unpack .../libsystemd0_255.4-1ubuntu5_armhf.deb ... 1074s Unpacking libsystemd0:armhf (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 1074s Setting up libsystemd0:armhf (255.4-1ubuntu5) ... 1074s Setting up libsystemd-shared:armhf (255.4-1ubuntu5) ... 1074s Setting up systemd-dev (255.4-1ubuntu5) ... 1074s Setting up systemd (255.4-1ubuntu5) ... 1075s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78659 files and directories currently installed.) 1075s Preparing to unpack .../systemd-sysv_255.4-1ubuntu5_armhf.deb ... 1075s Unpacking systemd-sysv (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 1075s Preparing to unpack .../libnss-systemd_255.4-1ubuntu5_armhf.deb ... 1075s Unpacking libnss-systemd:armhf (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 1076s Preparing to unpack .../libpam-systemd_255.4-1ubuntu5_armhf.deb ... 1076s Unpacking libpam-systemd:armhf (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 1076s Preparing to unpack .../libpam-modules-bin_1.5.3-5ubuntu3_armhf.deb ... 1076s Unpacking libpam-modules-bin (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 1076s Setting up libpam-modules-bin (1.5.3-5ubuntu3) ... 1076s pam_namespace.service is a disabled or a static unit not running, not starting it. 1076s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78659 files and directories currently installed.) 1076s Preparing to unpack .../libpam-modules_1.5.3-5ubuntu3_armhf.deb ... 1077s Unpacking libpam-modules:armhf (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 1077s Setting up libpam-modules:armhf (1.5.3-5ubuntu3) ... 1077s Installing new version of config file /etc/security/namespace.init ... 1077s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78657 files and directories currently installed.) 1077s Preparing to unpack .../libpam-runtime_1.5.3-5ubuntu3_all.deb ... 1077s Unpacking libpam-runtime (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 1077s Setting up libpam-runtime (1.5.3-5ubuntu3) ... 1077s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78657 files and directories currently installed.) 1077s Preparing to unpack .../0-dbus-user-session_1.14.10-4ubuntu2_armhf.deb ... 1077s Unpacking dbus-user-session (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 1077s Preparing to unpack .../1-libapparmor1_4.0.0-beta3-0ubuntu2_armhf.deb ... 1077s Unpacking libapparmor1:armhf (4.0.0-beta3-0ubuntu2) over (4.0.0~alpha4-0ubuntu1) ... 1077s Preparing to unpack .../2-dbus-bin_1.14.10-4ubuntu2_armhf.deb ... 1077s Unpacking dbus-bin (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 1078s Preparing to unpack .../3-dbus-system-bus-common_1.14.10-4ubuntu2_all.deb ... 1078s Unpacking dbus-system-bus-common (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 1078s Preparing to unpack .../4-dbus_1.14.10-4ubuntu2_armhf.deb ... 1078s Unpacking dbus (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 1078s Preparing to unpack .../5-dbus-daemon_1.14.10-4ubuntu2_armhf.deb ... 1078s Unpacking dbus-daemon (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 1078s Preparing to unpack .../6-libdbus-1-3_1.14.10-4ubuntu2_armhf.deb ... 1078s Unpacking libdbus-1-3:armhf (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 1078s Preparing to unpack .../7-kmod_31+20240202-2ubuntu4_armhf.deb ... 1078s Unpacking kmod (31+20240202-2ubuntu4) over (30+20230601-2ubuntu1) ... 1078s dpkg: warning: unable to delete old directory '/lib/modprobe.d': Directory not empty 1078s Preparing to unpack .../8-libkmod2_31+20240202-2ubuntu4_armhf.deb ... 1078s Unpacking libkmod2:armhf (31+20240202-2ubuntu4) over (30+20230601-2ubuntu1) ... 1078s Preparing to unpack .../9-libmount1_2.39.3-9ubuntu2_armhf.deb ... 1078s Unpacking libmount1:armhf (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 1078s Setting up libmount1:armhf (2.39.3-9ubuntu2) ... 1078s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78656 files and directories currently installed.) 1078s Preparing to unpack .../libseccomp2_2.5.5-1ubuntu2_armhf.deb ... 1078s Unpacking libseccomp2:armhf (2.5.5-1ubuntu2) over (2.5.5-1ubuntu1) ... 1078s Setting up libseccomp2:armhf (2.5.5-1ubuntu2) ... 1078s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78656 files and directories currently installed.) 1078s Preparing to unpack .../libuuid1_2.39.3-9ubuntu2_armhf.deb ... 1078s Unpacking libuuid1:armhf (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 1078s Setting up libuuid1:armhf (2.39.3-9ubuntu2) ... 1078s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78656 files and directories currently installed.) 1078s Preparing to unpack .../0-libcryptsetup12_2%3a2.7.0-1ubuntu2_armhf.deb ... 1078s Unpacking libcryptsetup12:armhf (2:2.7.0-1ubuntu2) over (2:2.7.0-1ubuntu1) ... 1079s Preparing to unpack .../1-libfdisk1_2.39.3-9ubuntu2_armhf.deb ... 1079s Unpacking libfdisk1:armhf (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 1079s Preparing to unpack .../2-mount_2.39.3-9ubuntu2_armhf.deb ... 1079s Unpacking mount (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 1079s Preparing to unpack .../3-libdevmapper1.02.1_2%3a1.02.185-3ubuntu2_armhf.deb ... 1079s Unpacking libdevmapper1.02.1:armhf (2:1.02.185-3ubuntu2) over (2:1.02.185-3ubuntu1) ... 1079s Selecting previously unselected package libparted2t64:armhf. 1079s Preparing to unpack .../4-libparted2t64_3.6-3.1build2_armhf.deb ... 1079s Unpacking libparted2t64:armhf (3.6-3.1build2) ... 1079s Preparing to unpack .../5-libsqlite3-0_3.45.1-1ubuntu1_armhf.deb ... 1079s Unpacking libsqlite3-0:armhf (3.45.1-1ubuntu1) over (3.45.1-1) ... 1079s Preparing to unpack .../6-pinentry-curses_1.2.1-3ubuntu4_armhf.deb ... 1079s Unpacking pinentry-curses (1.2.1-3ubuntu4) over (1.2.1-3ubuntu1) ... 1079s Preparing to unpack .../7-libsmartcols1_2.39.3-9ubuntu2_armhf.deb ... 1079s Unpacking libsmartcols1:armhf (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 1079s Setting up libsmartcols1:armhf (2.39.3-9ubuntu2) ... 1079s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78663 files and directories currently installed.) 1079s Preparing to unpack .../0-readline-common_8.2-4_all.deb ... 1079s Unpacking readline-common (8.2-4) over (8.2-3) ... 1079s Preparing to unpack .../1-python3-yaml_6.0.1-2build1_armhf.deb ... 1079s Unpacking python3-yaml (6.0.1-2build1) over (6.0.1-2) ... 1079s Preparing to unpack .../2-python-apt-common_2.7.7_all.deb ... 1079s Unpacking python-apt-common (2.7.7) over (2.7.6) ... 1080s Preparing to unpack .../3-python3-setuptools_68.1.2-2ubuntu1_all.deb ... 1080s Unpacking python3-setuptools (68.1.2-2ubuntu1) over (68.1.2-2) ... 1080s Preparing to unpack .../4-python3-pkg-resources_68.1.2-2ubuntu1_all.deb ... 1080s Unpacking python3-pkg-resources (68.1.2-2ubuntu1) over (68.1.2-2) ... 1080s Preparing to unpack .../5-dpkg_1.22.6ubuntu4_armhf.deb ... 1080s Unpacking dpkg (1.22.6ubuntu4) over (1.22.4ubuntu5) ... 1080s Setting up dpkg (1.22.6ubuntu4) ... 1081s Setting up libpython3.12-minimal:armhf (3.12.2-4build3) ... 1081s Setting up libexpat1:armhf (2.6.1-2) ... 1081s Setting up python3.12-minimal (3.12.2-4build3) ... 1083s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78662 files and directories currently installed.) 1083s Preparing to unpack .../python3-minimal_3.12.2-0ubuntu1_armhf.deb ... 1083s Unpacking python3-minimal (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 1083s Setting up python3-minimal (3.12.2-0ubuntu1) ... 1084s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78662 files and directories currently installed.) 1084s Preparing to unpack .../00-python3_3.12.2-0ubuntu1_armhf.deb ... 1084s Unpacking python3 (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 1084s Preparing to unpack .../01-libpython3-stdlib_3.12.2-0ubuntu1_armhf.deb ... 1084s Unpacking libpython3-stdlib:armhf (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 1084s Preparing to unpack .../02-bsdextrautils_2.39.3-9ubuntu2_armhf.deb ... 1084s Unpacking bsdextrautils (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 1084s Preparing to unpack .../03-groff-base_1.23.0-3build1_armhf.deb ... 1084s Unpacking groff-base (1.23.0-3build1) over (1.23.0-3) ... 1084s Preparing to unpack .../04-libsasl2-2_2.1.28+dfsg1-5ubuntu1_armhf.deb ... 1084s Unpacking libsasl2-2:armhf (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 1084s Preparing to unpack .../05-libblockdev-utils3_3.1.0-1build1_armhf.deb ... 1084s Unpacking libblockdev-utils3:armhf (3.1.0-1build1) over (3.1.0-1) ... 1085s Preparing to unpack .../06-libblockdev-crypto3_3.1.0-1build1_armhf.deb ... 1085s Unpacking libblockdev-crypto3:armhf (3.1.0-1build1) over (3.1.0-1) ... 1085s Preparing to unpack .../07-logsave_1.47.0-2.4~exp1ubuntu2_armhf.deb ... 1085s Unpacking logsave (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 1085s Preparing to unpack .../08-dhcpcd-base_1%3a10.0.6-1ubuntu2_armhf.deb ... 1085s Unpacking dhcpcd-base (1:10.0.6-1ubuntu2) over (1:10.0.6-1ubuntu1) ... 1085s Preparing to unpack .../09-eject_2.39.3-9ubuntu2_armhf.deb ... 1085s Unpacking eject (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 1085s Preparing to unpack .../10-libbpf1_1%3a1.3.0-2build1_armhf.deb ... 1085s Unpacking libbpf1:armhf (1:1.3.0-2build1) over (1:1.3.0-2) ... 1085s Preparing to unpack .../11-iproute2_6.1.0-1ubuntu5_armhf.deb ... 1085s Unpacking iproute2 (6.1.0-1ubuntu5) over (6.1.0-1ubuntu2) ... 1085s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78662 files and directories currently installed.) 1085s Removing libelf1:armhf (0.190-1) ... 1085s Selecting previously unselected package libelf1t64:armhf. 1085s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78657 files and directories currently installed.) 1085s Preparing to unpack .../libelf1t64_0.190-1.1build2_armhf.deb ... 1085s Unpacking libelf1t64:armhf (0.190-1.1build2) ... 1085s Preparing to unpack .../libtirpc-common_1.3.4+ds-1.1_all.deb ... 1085s Unpacking libtirpc-common (1.3.4+ds-1.1) over (1.3.4+ds-1build1) ... 1085s Preparing to unpack .../lsof_4.95.0-1build2_armhf.deb ... 1085s Unpacking lsof (4.95.0-1build2) over (4.95.0-1build1) ... 1086s Preparing to unpack .../libnsl2_1.3.0-3build2_armhf.deb ... 1086s Unpacking libnsl2:armhf (1.3.0-3build2) over (1.3.0-3) ... 1086s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78662 files and directories currently installed.) 1086s Removing libtirpc3:armhf (1.3.4+ds-1build1) ... 1086s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78656 files and directories currently installed.) 1086s Preparing to unpack .../0-libgssapi-krb5-2_1.20.1-6ubuntu1_armhf.deb ... 1086s Unpacking libgssapi-krb5-2:armhf (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 1086s Preparing to unpack .../1-libkrb5-3_1.20.1-6ubuntu1_armhf.deb ... 1086s Unpacking libkrb5-3:armhf (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 1086s Preparing to unpack .../2-libkrb5support0_1.20.1-6ubuntu1_armhf.deb ... 1086s Unpacking libkrb5support0:armhf (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 1086s Preparing to unpack .../3-libk5crypto3_1.20.1-6ubuntu1_armhf.deb ... 1086s Unpacking libk5crypto3:armhf (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 1086s Preparing to unpack .../4-libcom-err2_1.47.0-2.4~exp1ubuntu2_armhf.deb ... 1086s Unpacking libcom-err2:armhf (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 1086s Selecting previously unselected package libtirpc3t64:armhf. 1086s Preparing to unpack .../5-libtirpc3t64_1.3.4+ds-1.1_armhf.deb ... 1086s Adding 'diversion of /lib/arm-linux-gnueabihf/libtirpc.so.3 to /lib/arm-linux-gnueabihf/libtirpc.so.3.usr-is-merged by libtirpc3t64' 1086s Adding 'diversion of /lib/arm-linux-gnueabihf/libtirpc.so.3.0.0 to /lib/arm-linux-gnueabihf/libtirpc.so.3.0.0.usr-is-merged by libtirpc3t64' 1086s Unpacking libtirpc3t64:armhf (1.3.4+ds-1.1) ... 1086s Preparing to unpack .../6-libc-bin_2.39-0ubuntu6_armhf.deb ... 1086s Unpacking libc-bin (2.39-0ubuntu6) over (2.39-0ubuntu2) ... 1086s Setting up libc-bin (2.39-0ubuntu6) ... 1087s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78667 files and directories currently installed.) 1087s Preparing to unpack .../0-locales_2.39-0ubuntu6_all.deb ... 1087s Unpacking locales (2.39-0ubuntu6) over (2.39-0ubuntu2) ... 1087s Preparing to unpack .../1-libproc2-0_2%3a4.0.4-4ubuntu2_armhf.deb ... 1087s Unpacking libproc2-0:armhf (2:4.0.4-4ubuntu2) over (2:4.0.4-4ubuntu1) ... 1087s Preparing to unpack .../2-procps_2%3a4.0.4-4ubuntu2_armhf.deb ... 1087s Unpacking procps (2:4.0.4-4ubuntu2) over (2:4.0.4-4ubuntu1) ... 1087s Preparing to unpack .../3-vim-tiny_2%3a9.1.0016-1ubuntu6_armhf.deb ... 1087s Unpacking vim-tiny (2:9.1.0016-1ubuntu6) over (2:9.1.0016-1ubuntu2) ... 1088s Preparing to unpack .../4-vim-common_2%3a9.1.0016-1ubuntu6_all.deb ... 1088s Unpacking vim-common (2:9.1.0016-1ubuntu6) over (2:9.1.0016-1ubuntu2) ... 1088s Preparing to unpack .../5-e2fsprogs-l10n_1.47.0-2.4~exp1ubuntu2_all.deb ... 1088s Unpacking e2fsprogs-l10n (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 1088s Preparing to unpack .../6-libblockdev-fs3_3.1.0-1build1_armhf.deb ... 1088s Unpacking libblockdev-fs3:armhf (3.1.0-1build1) over (3.1.0-1) ... 1088s dpkg: libreiserfscore0: dependency problems, but removing anyway as you requested: 1088s btrfs-progs depends on libreiserfscore0 (>= 1:3.6.27). 1088s 1088s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78668 files and directories currently installed.) 1088s Removing libreiserfscore0 (1:3.6.27-7) ... 1088s Selecting previously unselected package libreiserfscore0t64. 1088s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78663 files and directories currently installed.) 1088s Preparing to unpack .../libreiserfscore0t64_1%3a3.6.27-7.1_armhf.deb ... 1088s Unpacking libreiserfscore0t64 (1:3.6.27-7.1) ... 1088s Preparing to unpack .../btrfs-progs_6.6.3-1.1build1_armhf.deb ... 1088s Unpacking btrfs-progs (6.6.3-1.1build1) over (6.6.3-1.1) ... 1088s dpkg: libext2fs2:armhf: dependency problems, but removing anyway as you requested: 1088s e2fsprogs depends on libext2fs2 (= 1.47.0-2ubuntu1). 1088s 1088s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78669 files and directories currently installed.) 1088s Removing libext2fs2:armhf (1.47.0-2ubuntu1) ... 1088s Selecting previously unselected package libext2fs2t64:armhf. 1088s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78662 files and directories currently installed.) 1088s Preparing to unpack .../libext2fs2t64_1.47.0-2.4~exp1ubuntu2_armhf.deb ... 1088s Adding 'diversion of /lib/arm-linux-gnueabihf/libe2p.so.2 to /lib/arm-linux-gnueabihf/libe2p.so.2.usr-is-merged by libext2fs2t64' 1088s Adding 'diversion of /lib/arm-linux-gnueabihf/libe2p.so.2.3 to /lib/arm-linux-gnueabihf/libe2p.so.2.3.usr-is-merged by libext2fs2t64' 1088s Adding 'diversion of /lib/arm-linux-gnueabihf/libext2fs.so.2 to /lib/arm-linux-gnueabihf/libext2fs.so.2.usr-is-merged by libext2fs2t64' 1088s Adding 'diversion of /lib/arm-linux-gnueabihf/libext2fs.so.2.4 to /lib/arm-linux-gnueabihf/libext2fs.so.2.4.usr-is-merged by libext2fs2t64' 1088s Unpacking libext2fs2t64:armhf (1.47.0-2.4~exp1ubuntu2) ... 1089s Setting up libcom-err2:armhf (1.47.0-2.4~exp1ubuntu2) ... 1089s Setting up libext2fs2t64:armhf (1.47.0-2.4~exp1ubuntu2) ... 1089s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78678 files and directories currently installed.) 1089s Preparing to unpack .../e2fsprogs_1.47.0-2.4~exp1ubuntu2_armhf.deb ... 1089s Unpacking e2fsprogs (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 1089s Preparing to unpack .../libblockdev-loop3_3.1.0-1build1_armhf.deb ... 1089s Unpacking libblockdev-loop3:armhf (3.1.0-1build1) over (3.1.0-1) ... 1089s Preparing to unpack .../libblockdev-mdraid3_3.1.0-1build1_armhf.deb ... 1089s Unpacking libblockdev-mdraid3:armhf (3.1.0-1build1) over (3.1.0-1) ... 1089s Preparing to unpack .../libblockdev-nvme3_3.1.0-1build1_armhf.deb ... 1089s Unpacking libblockdev-nvme3:armhf (3.1.0-1build1) over (3.1.0-1) ... 1089s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78678 files and directories currently installed.) 1089s Removing libnvme1 (1.8-2) ... 1089s Selecting previously unselected package libnvme1t64. 1089s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78671 files and directories currently installed.) 1089s Preparing to unpack .../00-libnvme1t64_1.8-3_armhf.deb ... 1089s Unpacking libnvme1t64 (1.8-3) ... 1089s Preparing to unpack .../01-libblockdev-part3_3.1.0-1build1_armhf.deb ... 1089s Unpacking libblockdev-part3:armhf (3.1.0-1build1) over (3.1.0-1) ... 1089s Preparing to unpack .../02-libblockdev-swap3_3.1.0-1build1_armhf.deb ... 1089s Unpacking libblockdev-swap3:armhf (3.1.0-1build1) over (3.1.0-1) ... 1089s Preparing to unpack .../03-libblockdev3_3.1.0-1build1_armhf.deb ... 1089s Unpacking libblockdev3:armhf (3.1.0-1build1) over (3.1.0-1) ... 1089s Preparing to unpack .../04-libgudev-1.0-0_1%3a238-3ubuntu2_armhf.deb ... 1089s Unpacking libgudev-1.0-0:armhf (1:238-3ubuntu2) over (1:238-3) ... 1089s Preparing to unpack .../05-libxml2_2.9.14+dfsg-1.3ubuntu2_armhf.deb ... 1089s Unpacking libxml2:armhf (2.9.14+dfsg-1.3ubuntu2) over (2.9.14+dfsg-1.3ubuntu1) ... 1090s Preparing to unpack .../06-libmbim-proxy_1.31.2-0ubuntu2_armhf.deb ... 1090s Unpacking libmbim-proxy (1.31.2-0ubuntu2) over (1.30.0-1) ... 1090s Preparing to unpack .../07-libmbim-glib4_1.31.2-0ubuntu2_armhf.deb ... 1090s Unpacking libmbim-glib4:armhf (1.31.2-0ubuntu2) over (1.30.0-1) ... 1090s Preparing to unpack .../08-libjson-glib-1.0-common_1.8.0-2build1_all.deb ... 1090s Unpacking libjson-glib-1.0-common (1.8.0-2build1) over (1.8.0-2) ... 1090s Preparing to unpack .../09-libjson-glib-1.0-0_1.8.0-2build1_armhf.deb ... 1090s Unpacking libjson-glib-1.0-0:armhf (1.8.0-2build1) over (1.8.0-2) ... 1090s Preparing to unpack .../10-libusb-1.0-0_2%3a1.0.27-1_armhf.deb ... 1090s Unpacking libusb-1.0-0:armhf (2:1.0.27-1) over (2:1.0.26-1) ... 1090s Preparing to unpack .../11-libgusb2_0.4.8-1build1_armhf.deb ... 1090s Unpacking libgusb2:armhf (0.4.8-1build1) over (0.4.8-1) ... 1090s Preparing to unpack .../12-libmm-glib0_1.23.4-0ubuntu1_armhf.deb ... 1090s Unpacking libmm-glib0:armhf (1.23.4-0ubuntu1) over (1.22.0-3) ... 1090s Preparing to unpack .../13-libprotobuf-c1_1.4.1-1ubuntu3_armhf.deb ... 1090s Unpacking libprotobuf-c1:armhf (1.4.1-1ubuntu3) over (1.4.1-1ubuntu2) ... 1090s Preparing to unpack .../14-libbrotli1_1.1.0-2build1_armhf.deb ... 1090s Unpacking libbrotli1:armhf (1.1.0-2build1) over (1.1.0-2) ... 1090s Preparing to unpack .../15-libnghttp2-14_1.59.0-1build1_armhf.deb ... 1090s Unpacking libnghttp2-14:armhf (1.59.0-1build1) over (1.59.0-1) ... 1090s Preparing to unpack .../16-libssh-4_0.10.6-2build1_armhf.deb ... 1090s Unpacking libssh-4:armhf (0.10.6-2build1) over (0.10.6-2) ... 1090s Preparing to unpack .../17-libibverbs1_50.0-2build1_armhf.deb ... 1090s Unpacking libibverbs1:armhf (50.0-2build1) over (50.0-2) ... 1090s Preparing to unpack .../18-libfido2-1_1.14.0-1build1_armhf.deb ... 1090s Unpacking libfido2-1:armhf (1.14.0-1build1) over (1.14.0-1) ... 1090s Preparing to unpack .../19-coreutils_9.4-3ubuntu3_armhf.deb ... 1090s Unpacking coreutils (9.4-3ubuntu3) over (9.4-2ubuntu4) ... 1091s Setting up coreutils (9.4-3ubuntu3) ... 1091s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78679 files and directories currently installed.) 1091s Preparing to unpack .../debianutils_5.17_armhf.deb ... 1091s Unpacking debianutils (5.17) over (5.16) ... 1091s Setting up debianutils (5.17) ... 1091s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78679 files and directories currently installed.) 1091s Preparing to unpack .../util-linux_2.39.3-9ubuntu2_armhf.deb ... 1091s Unpacking util-linux (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 1091s Setting up util-linux (2.39.3-9ubuntu2) ... 1093s fstrim.service is a disabled or a static unit not running, not starting it. 1093s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78679 files and directories currently installed.) 1093s Removing libatm1:armhf (1:2.5.1-5) ... 1093s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78674 files and directories currently installed.) 1093s Preparing to unpack .../curl_8.5.0-2ubuntu8_armhf.deb ... 1093s Unpacking curl (8.5.0-2ubuntu8) over (8.5.0-2ubuntu2) ... 1093s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78674 files and directories currently installed.) 1093s Removing libcurl4:armhf (8.5.0-2ubuntu2) ... 1093s Selecting previously unselected package libcurl4t64:armhf. 1093s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78669 files and directories currently installed.) 1093s Preparing to unpack .../libcurl4t64_8.5.0-2ubuntu8_armhf.deb ... 1093s Unpacking libcurl4t64:armhf (8.5.0-2ubuntu8) ... 1093s Preparing to unpack .../file_1%3a5.45-3_armhf.deb ... 1093s Unpacking file (1:5.45-3) over (1:5.45-2) ... 1093s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78675 files and directories currently installed.) 1093s Removing libmagic1:armhf (1:5.45-2) ... 1094s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78665 files and directories currently installed.) 1094s Preparing to unpack .../libmagic-mgc_1%3a5.45-3_armhf.deb ... 1094s Unpacking libmagic-mgc (1:5.45-3) over (1:5.45-2) ... 1094s Selecting previously unselected package libmagic1t64:armhf. 1094s Preparing to unpack .../libmagic1t64_1%3a5.45-3_armhf.deb ... 1094s Unpacking libmagic1t64:armhf (1:5.45-3) ... 1094s Preparing to unpack .../libplymouth5_24.004.60-1ubuntu6_armhf.deb ... 1094s Unpacking libplymouth5:armhf (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 1094s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78676 files and directories currently installed.) 1094s Removing libpng16-16:armhf (1.6.43-1) ... 1094s Selecting previously unselected package libpng16-16t64:armhf. 1094s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78666 files and directories currently installed.) 1094s Preparing to unpack .../libpng16-16t64_1.6.43-3_armhf.deb ... 1094s Unpacking libpng16-16t64:armhf (1.6.43-3) ... 1094s Preparing to unpack .../bind9-host_1%3a9.18.24-0ubuntu3_armhf.deb ... 1094s Unpacking bind9-host (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 1094s Preparing to unpack .../bind9-dnsutils_1%3a9.18.24-0ubuntu3_armhf.deb ... 1094s Unpacking bind9-dnsutils (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 1094s Preparing to unpack .../bind9-libs_1%3a9.18.24-0ubuntu3_armhf.deb ... 1094s Unpacking bind9-libs:armhf (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 1094s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78677 files and directories currently installed.) 1094s Removing libuv1:armhf (1.48.0-1) ... 1094s Selecting previously unselected package libuv1t64:armhf. 1095s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78672 files and directories currently installed.) 1095s Preparing to unpack .../libuv1t64_1.48.0-1.1_armhf.deb ... 1095s Unpacking libuv1t64:armhf (1.48.0-1.1) ... 1095s Preparing to unpack .../uuid-runtime_2.39.3-9ubuntu2_armhf.deb ... 1095s Unpacking uuid-runtime (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 1095s Preparing to unpack .../libdebconfclient0_0.271ubuntu2_armhf.deb ... 1095s Unpacking libdebconfclient0:armhf (0.271ubuntu2) over (0.271ubuntu1) ... 1095s Setting up libdebconfclient0:armhf (0.271ubuntu2) ... 1095s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78678 files and directories currently installed.) 1095s Preparing to unpack .../libsemanage-common_3.5-1build4_all.deb ... 1095s Unpacking libsemanage-common (3.5-1build4) over (3.5-1build2) ... 1095s Setting up libsemanage-common (3.5-1build4) ... 1095s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78678 files and directories currently installed.) 1095s Preparing to unpack .../libsemanage2_3.5-1build4_armhf.deb ... 1095s Unpacking libsemanage2:armhf (3.5-1build4) over (3.5-1build2) ... 1095s Setting up libsemanage2:armhf (3.5-1build4) ... 1095s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78678 files and directories currently installed.) 1095s Preparing to unpack .../install-info_7.1-3build1_armhf.deb ... 1095s Unpacking install-info (7.1-3build1) over (7.1-3) ... 1095s Setting up install-info (7.1-3build1) ... 1096s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78678 files and directories currently installed.) 1096s Preparing to unpack .../00-gcc-13-base_13.2.0-21ubuntu1_armhf.deb ... 1096s Unpacking gcc-13-base:armhf (13.2.0-21ubuntu1) over (13.2.0-17ubuntu2) ... 1096s Preparing to unpack .../01-libss2_1.47.0-2.4~exp1ubuntu2_armhf.deb ... 1096s Unpacking libss2:armhf (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 1096s Preparing to unpack .../02-dmsetup_2%3a1.02.185-3ubuntu2_armhf.deb ... 1096s Unpacking dmsetup (2:1.02.185-3ubuntu2) over (2:1.02.185-3ubuntu1) ... 1096s Preparing to unpack .../03-krb5-locales_1.20.1-6ubuntu1_all.deb ... 1096s Unpacking krb5-locales (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 1096s Preparing to unpack .../04-libbsd0_0.12.1-1_armhf.deb ... 1096s Unpacking libbsd0:armhf (0.12.1-1) over (0.11.8-1) ... 1096s Preparing to unpack .../05-libglib2.0-data_2.79.3-3ubuntu5_all.deb ... 1096s Unpacking libglib2.0-data (2.79.3-3ubuntu5) over (2.79.2-1~ubuntu1) ... 1096s Preparing to unpack .../06-libslang2_2.3.3-3build1_armhf.deb ... 1096s Unpacking libslang2:armhf (2.3.3-3build1) over (2.3.3-3) ... 1096s Preparing to unpack .../07-rsyslog_8.2312.0-3ubuntu7_armhf.deb ... 1096s Unpacking rsyslog (8.2312.0-3ubuntu7) over (8.2312.0-3ubuntu3) ... 1096s Selecting previously unselected package xdg-user-dirs. 1096s Preparing to unpack .../08-xdg-user-dirs_0.18-1_armhf.deb ... 1096s Unpacking xdg-user-dirs (0.18-1) ... 1096s Preparing to unpack .../09-xxd_2%3a9.1.0016-1ubuntu6_armhf.deb ... 1096s Unpacking xxd (2:9.1.0016-1ubuntu6) over (2:9.1.0016-1ubuntu2) ... 1096s Preparing to unpack .../10-apparmor_4.0.0-beta3-0ubuntu2_armhf.deb ... 1097s Unpacking apparmor (4.0.0-beta3-0ubuntu2) over (4.0.0~alpha4-0ubuntu1) ... 1098s Preparing to unpack .../11-ftp_20230507-2build1_all.deb ... 1098s Unpacking ftp (20230507-2build1) over (20230507-2) ... 1098s Preparing to unpack .../12-inetutils-telnet_2%3a2.5-3ubuntu3_armhf.deb ... 1098s Unpacking inetutils-telnet (2:2.5-3ubuntu3) over (2:2.5-3ubuntu1) ... 1098s Preparing to unpack .../13-info_7.1-3build1_armhf.deb ... 1098s Unpacking info (7.1-3build1) over (7.1-3) ... 1098s Preparing to unpack .../14-libxmuu1_2%3a1.1.3-3build1_armhf.deb ... 1098s Unpacking libxmuu1:armhf (2:1.1.3-3build1) over (2:1.1.3-3) ... 1098s Preparing to unpack .../15-lshw_02.19.git.2021.06.19.996aaad9c7-2build2_armhf.deb ... 1098s Unpacking lshw (02.19.git.2021.06.19.996aaad9c7-2build2) over (02.19.git.2021.06.19.996aaad9c7-2build1) ... 1099s Preparing to unpack .../16-mtr-tiny_0.95-1.1build1_armhf.deb ... 1099s Unpacking mtr-tiny (0.95-1.1build1) over (0.95-1.1) ... 1099s Preparing to unpack .../17-plymouth-theme-ubuntu-text_24.004.60-1ubuntu6_armhf.deb ... 1099s Unpacking plymouth-theme-ubuntu-text (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 1099s Preparing to unpack .../18-plymouth_24.004.60-1ubuntu6_armhf.deb ... 1099s Unpacking plymouth (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 1099s Preparing to unpack .../19-psmisc_23.7-1_armhf.deb ... 1099s Unpacking psmisc (23.7-1) over (23.6-2) ... 1099s Preparing to unpack .../20-telnet_0.17+2.5-3ubuntu3_all.deb ... 1099s Unpacking telnet (0.17+2.5-3ubuntu3) over (0.17+2.5-3ubuntu1) ... 1099s Preparing to unpack .../21-xz-utils_5.6.0-0.2_armhf.deb ... 1099s Unpacking xz-utils (5.6.0-0.2) over (5.4.5-0.3) ... 1099s Preparing to unpack .../22-ubuntu-standard_1.536build1_armhf.deb ... 1099s Unpacking ubuntu-standard (1.536build1) over (1.536) ... 1099s Preparing to unpack .../23-usb.ids_2024.03.18-1_all.deb ... 1099s Unpacking usb.ids (2024.03.18-1) over (2024.01.30-1) ... 1099s Preparing to unpack .../24-libctf-nobfd0_2.42-4ubuntu1_armhf.deb ... 1099s Unpacking libctf-nobfd0:armhf (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 1100s Preparing to unpack .../25-libctf0_2.42-4ubuntu1_armhf.deb ... 1100s Unpacking libctf0:armhf (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 1100s Preparing to unpack .../26-binutils-arm-linux-gnueabihf_2.42-4ubuntu1_armhf.deb ... 1100s Unpacking binutils-arm-linux-gnueabihf (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 1100s Preparing to unpack .../27-libbinutils_2.42-4ubuntu1_armhf.deb ... 1100s Unpacking libbinutils:armhf (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 1100s Preparing to unpack .../28-binutils_2.42-4ubuntu1_armhf.deb ... 1100s Unpacking binutils (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 1100s Preparing to unpack .../29-binutils-common_2.42-4ubuntu1_armhf.deb ... 1100s Unpacking binutils-common:armhf (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 1100s Preparing to unpack .../30-libsframe1_2.42-4ubuntu1_armhf.deb ... 1100s Unpacking libsframe1:armhf (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 1100s Preparing to unpack .../31-bolt_0.9.6-2build1_armhf.deb ... 1100s Unpacking bolt (0.9.6-2build1) over (0.9.6-2) ... 1100s Preparing to unpack .../32-cryptsetup-bin_2%3a2.7.0-1ubuntu2_armhf.deb ... 1100s Unpacking cryptsetup-bin (2:2.7.0-1ubuntu2) over (2:2.7.0-1ubuntu1) ... 1100s Preparing to unpack .../33-dpkg-dev_1.22.6ubuntu4_all.deb ... 1100s Unpacking dpkg-dev (1.22.6ubuntu4) over (1.22.4ubuntu5) ... 1101s Preparing to unpack .../34-libdpkg-perl_1.22.6ubuntu4_all.deb ... 1101s Unpacking libdpkg-perl (1.22.6ubuntu4) over (1.22.4ubuntu5) ... 1101s Preparing to unpack .../35-fonts-ubuntu-console_0.869+git20240321-0ubuntu1_all.deb ... 1101s Unpacking fonts-ubuntu-console (0.869+git20240321-0ubuntu1) over (0.869-0ubuntu1) ... 1101s Preparing to unpack .../36-gnupg-l10n_2.4.4-2ubuntu15_all.deb ... 1101s Unpacking gnupg-l10n (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 1101s Preparing to unpack .../37-ibverbs-providers_50.0-2build1_armhf.deb ... 1101s Unpacking ibverbs-providers:armhf (50.0-2build1) over (50.0-2) ... 1101s Preparing to unpack .../38-jq_1.7.1-3_armhf.deb ... 1101s Unpacking jq (1.7.1-3) over (1.7.1-2) ... 1101s Preparing to unpack .../39-libjq1_1.7.1-3_armhf.deb ... 1101s Unpacking libjq1:armhf (1.7.1-3) over (1.7.1-2) ... 1101s Selecting previously unselected package libatm1t64:armhf. 1101s Preparing to unpack .../40-libatm1t64_1%3a2.5.1-5.1_armhf.deb ... 1101s Unpacking libatm1t64:armhf (1:2.5.1-5.1) ... 1101s Preparing to unpack .../41-libevent-core-2.1-7_2.1.12-stable-9build1_armhf.deb ... 1101s Unpacking libevent-core-2.1-7:armhf (2.1.12-stable-9build1) over (2.1.12-stable-9) ... 1101s Preparing to unpack .../42-libftdi1-2_1.5-6build4_armhf.deb ... 1101s Unpacking libftdi1-2:armhf (1.5-6build4) over (1.5-6build3) ... 1101s Preparing to unpack .../43-libldap-common_2.6.7+dfsg-1~exp1ubuntu6_all.deb ... 1101s Unpacking libldap-common (2.6.7+dfsg-1~exp1ubuntu6) over (2.6.7+dfsg-1~exp1ubuntu1) ... 1101s Preparing to unpack .../44-libsasl2-modules_2.1.28+dfsg1-5ubuntu1_armhf.deb ... 1101s Unpacking libsasl2-modules:armhf (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 1102s Preparing to unpack .../45-python3-distutils_3.12.2-3ubuntu1.1_all.deb ... 1102s Unpacking python3-distutils (3.12.2-3ubuntu1.1) over (3.11.5-1) ... 1102s Preparing to unpack .../46-python3-lib2to3_3.12.2-3ubuntu1.1_all.deb ... 1102s Unpacking python3-lib2to3 (3.12.2-3ubuntu1.1) over (3.11.5-1) ... 1102s Preparing to unpack .../47-python3-markupsafe_2.1.5-1build1_armhf.deb ... 1102s Unpacking python3-markupsafe (2.1.5-1build1) over (2.1.5-1) ... 1102s Preparing to unpack .../48-python3-pyrsistent_0.20.0-1build1_armhf.deb ... 1102s Unpacking python3-pyrsistent:armhf (0.20.0-1build1) over (0.20.0-1) ... 1102s Preparing to unpack .../49-python3-typing-extensions_4.10.0-1_all.deb ... 1103s Unpacking python3-typing-extensions (4.10.0-1) over (4.9.0-1) ... 1103s Preparing to unpack .../50-cloud-init_24.1.2-0ubuntu1_all.deb ... 1103s Unpacking cloud-init (24.1.2-0ubuntu1) over (24.1.1-0ubuntu1) ... 1104s Preparing to unpack .../51-kpartx_0.9.4-5ubuntu6_armhf.deb ... 1104s Unpacking kpartx (0.9.4-5ubuntu6) over (0.9.4-5ubuntu3) ... 1104s Setting up fonts-ubuntu-console (0.869+git20240321-0ubuntu1) ... 1104s Setting up pinentry-curses (1.2.1-3ubuntu4) ... 1104s Setting up motd-news-config (13ubuntu8) ... 1104s Setting up libtext-iconv-perl:armhf (1.7-8build2) ... 1104s Setting up libtext-charwidth-perl:armhf (0.04-11build2) ... 1104s Setting up libibverbs1:armhf (50.0-2build1) ... 1104s Setting up systemd-sysv (255.4-1ubuntu5) ... 1104s Setting up libapparmor1:armhf (4.0.0-beta3-0ubuntu2) ... 1104s Setting up libatm1t64:armhf (1:2.5.1-5.1) ... 1104s Setting up libgdbm6t64:armhf (1.23-5.1) ... 1104s Setting up bsdextrautils (2.39.3-9ubuntu2) ... 1104s Setting up libgdbm-compat4t64:armhf (1.23-5.1) ... 1104s Setting up xdg-user-dirs (0.18-1) ... 1104s Setting up ibverbs-providers:armhf (50.0-2build1) ... 1122s Setting up linux-headers-6.8.0-20 (6.8.0-20.20) ... 1122s Setting up libmagic-mgc (1:5.45-3) ... 1122s Setting up gawk (1:5.2.1-2build2) ... 1122s Setting up psmisc (23.7-1) ... 1122s Setting up libjq1:armhf (1.7.1-3) ... 1122s Setting up libtirpc-common (1.3.4+ds-1.1) ... 1122s Setting up libbrotli1:armhf (1.1.0-2build1) ... 1122s Setting up libsqlite3-0:armhf (3.45.1-1ubuntu1) ... 1122s Setting up libsasl2-modules:armhf (2.1.28+dfsg1-5ubuntu1) ... 1122s Setting up libuv1t64:armhf (1.48.0-1.1) ... 1122s Setting up libmagic1t64:armhf (1:5.45-3) ... 1122s Setting up rsyslog (8.2312.0-3ubuntu7) ... 1122s info: The user `syslog' is already a member of `adm'. 1123s apparmor_parser: Unable to replace "rsyslogd". apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1123s 1124s Setting up binutils-common:armhf (2.42-4ubuntu1) ... 1124s Setting up libpsl5t64:armhf (0.21.2-1.1) ... 1124s Setting up libnghttp2-14:armhf (1.59.0-1build1) ... 1124s Setting up libreiserfscore0t64 (1:3.6.27-7.1) ... 1124s Setting up libctf-nobfd0:armhf (2.42-4ubuntu1) ... 1124s Setting up libnss-systemd:armhf (255.4-1ubuntu5) ... 1124s Setting up krb5-locales (1.20.1-6ubuntu1) ... 1124s Setting up file (1:5.45-3) ... 1124s Setting up lshw (02.19.git.2021.06.19.996aaad9c7-2build2) ... 1124s Setting up locales (2.39-0ubuntu6) ... 1125s Generating locales (this might take a while)... 1130s en_US.UTF-8... done 1153s Generation complete. 1153s Setting up libldap-common (2.6.7+dfsg-1~exp1ubuntu6) ... 1153s Setting up libprotobuf-c1:armhf (1.4.1-1ubuntu3) ... 1153s Setting up xxd (2:9.1.0016-1ubuntu6) ... 1153s Setting up libsframe1:armhf (2.42-4ubuntu1) ... 1153s Setting up libelf1t64:armhf (0.190-1.1build2) ... 1153s Setting up libkrb5support0:armhf (1.20.1-6ubuntu1) ... 1153s Setting up linux-headers-6.8.0-20-generic (6.8.0-20.20) ... 1153s Setting up eject (2.39.3-9ubuntu2) ... 1153s Setting up apparmor (4.0.0-beta3-0ubuntu2) ... 1153s Installing new version of config file /etc/apparmor.d/abstractions/authentication ... 1153s Installing new version of config file /etc/apparmor.d/abstractions/crypto ... 1153s Installing new version of config file /etc/apparmor.d/abstractions/kde-open5 ... 1153s Installing new version of config file /etc/apparmor.d/abstractions/openssl ... 1153s Installing new version of config file /etc/apparmor.d/code ... 1153s Installing new version of config file /etc/apparmor.d/firefox ... 1154s apparmor_parser: Unable to replace "lsb_release". apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1154s 1154s apparmor_parser: Unable to replace "kmod". apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1154s 1154s apparmor_parser: Unable to replace "nvidia_modprobe". apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1154s 1155s sysctl: cannot stat /proc/sys/kernel/apparmor_restrict_unprivileged_userns: No such file or directory 1155s Reloading AppArmor profiles 1155s /sbin/apparmor_parser: Unable to replace "1password". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "Discord". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "MongoDB Compass". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "QtWebEngineProcess". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "brave". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "buildah". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "busybox". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "cam". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "ch-checkns". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "ch-run". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "chrome". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "vscode". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "crun". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "devhelp". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "element-desktop". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "epiphany". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "evolution". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "firefox". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "flatpak". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "geary". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "github-desktop". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "goldendict". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "ipa_verify". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "kchmviewer". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "keybase". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "lc-compliance". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "libcamerify". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "linux-sandbox". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "loupe". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "lxc-attach". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "lxc-destroy". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "lxc-create". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "lxc-stop". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "lxc-execute". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "lxc-unshare". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "mmdebstrap". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "msedge". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "nautilus". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "notepadqq". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "obsidian". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "opam". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "opera". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "pageedit". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "podman". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "qcam". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "polypane". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "qmapshack". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "lxc-usernsexec". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "qutebrowser". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "rootlesskit". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "rssguard". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "runc". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "sbuild". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "sbuild-abort". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "sbuild-adduser". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "privacybrowser". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "sbuild-checkpackages". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "sbuild-clean". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "sbuild-destroychroot". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "sbuild-createchroot". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "sbuild-distupgrade". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "sbuild-shell". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "QtWebEngineProcess". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "plasmashell". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "rpm". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "sbuild-unhold". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "sbuild-update". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "sbuild-upgrade". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "sbuild-apt". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "scide". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "signal-desktop". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "slirp4netns". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "slack". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "steam". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "stress-ng". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "surfshark". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "thunderbird". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "trinity". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "tup". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "toybox". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "systemd-coredump". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "sbuild-hold". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "userbindmount". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "tuxedo-control-center". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "unprivileged_userns". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "uwsgi-core". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "vdens". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "virtiofsd". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "vivaldi-bin". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "vpnns". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "wpcom". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "kmod". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "nvidia_modprobe". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "lsb_release". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "unix-chkpwd". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "/usr/bin/man". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "rsyslogd". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "ubuntu_pro_apt_news". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s /sbin/apparmor_parser: Unable to replace "tcpdump". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1155s 1155s Error: At least one profile failed to load 1155s Setting up libglib2.0-0t64:armhf (2.79.3-3ubuntu5) ... 1155s No schema files found: doing nothing. 1155s Setting up libglib2.0-data (2.79.3-3ubuntu5) ... 1155s Setting up vim-common (2:9.1.0016-1ubuntu6) ... 1155s Setting up gcc-13-base:armhf (13.2.0-21ubuntu1) ... 1155s Setting up libqrtr-glib0:armhf (1.2.2-1ubuntu3) ... 1155s Setting up libslang2:armhf (2.3.3-3build1) ... 1155s Setting up libnvme1t64 (1.8-3) ... 1155s Setting up mtr-tiny (0.95-1.1build1) ... 1155s Setting up gnupg-l10n (2.4.4-2ubuntu15) ... 1155s Setting up librtmp1:armhf (2.4+20151223.gitfa8646d.1-2build6) ... 1155s Setting up libdbus-1-3:armhf (1.14.10-4ubuntu2) ... 1155s Setting up xz-utils (5.6.0-0.2) ... 1155s Setting up perl-modules-5.38 (5.38.2-3.2) ... 1155s Setting up libproc2-0:armhf (2:4.0.4-4ubuntu2) ... 1155s Setting up libpng16-16t64:armhf (1.6.43-3) ... 1155s Setting up systemd-timesyncd (255.4-1ubuntu5) ... 1156s Setting up libevent-core-2.1-7:armhf (2.1.12-stable-9build1) ... 1156s Setting up libss2:armhf (1.47.0-2.4~exp1ubuntu2) ... 1156s Setting up usb.ids (2024.03.18-1) ... 1156s Setting up sudo (1.9.15p5-3ubuntu3) ... 1156s Setting up dhcpcd-base (1:10.0.6-1ubuntu2) ... 1156s Setting up gir1.2-glib-2.0:armhf (2.79.3-3ubuntu5) ... 1156s Setting up libk5crypto3:armhf (1.20.1-6ubuntu1) ... 1156s Setting up logsave (1.47.0-2.4~exp1ubuntu2) ... 1156s Setting up libfdisk1:armhf (2.39.3-9ubuntu2) ... 1156s Setting up libdb5.3t64:armhf (5.3.28+dfsg2-6) ... 1156s Setting up libdevmapper1.02.1:armhf (2:1.02.185-3ubuntu2) ... 1156s Setting up python-apt-common (2.7.7) ... 1156s Setting up mount (2.39.3-9ubuntu2) ... 1156s Setting up dmsetup (2:1.02.185-3ubuntu2) ... 1156s Setting up uuid-runtime (2.39.3-9ubuntu2) ... 1158s uuidd.service is a disabled or a static unit not running, not starting it. 1158s Setting up libmm-glib0:armhf (1.23.4-0ubuntu1) ... 1158s Setting up groff-base (1.23.0-3build1) ... 1158s Setting up libplymouth5:armhf (24.004.60-1ubuntu6) ... 1158s Setting up dbus-session-bus-common (1.14.10-4ubuntu2) ... 1158s Setting up jq (1.7.1-3) ... 1158s Setting up procps (2:4.0.4-4ubuntu2) ... 1159s Setting up gpgconf (2.4.4-2ubuntu15) ... 1159s Setting up libpcap0.8t64:armhf (1.10.4-4.1ubuntu2) ... 1159s Setting up libcryptsetup12:armhf (2:2.7.0-1ubuntu2) ... 1159s Setting up libgirepository-1.0-1:armhf (1.79.1-1ubuntu6) ... 1159s Setting up libjson-glib-1.0-common (1.8.0-2build1) ... 1159s Setting up libkrb5-3:armhf (1.20.1-6ubuntu1) ... 1159s Setting up libpython3.11-minimal:armhf (3.11.8-1build4) ... 1159s Setting up libusb-1.0-0:armhf (2:1.0.27-1) ... 1159s Setting up libperl5.38t64:armhf (5.38.2-3.2) ... 1159s Setting up tnftp (20230507-2build1) ... 1159s Setting up libbinutils:armhf (2.42-4ubuntu1) ... 1159s Setting up dbus-system-bus-common (1.14.10-4ubuntu2) ... 1159s Setting up libfido2-1:armhf (1.14.0-1build1) ... 1159s Setting up openssl (3.0.13-0ubuntu2) ... 1159s Setting up libbsd0:armhf (0.12.1-1) ... 1159s Setting up readline-common (8.2-4) ... 1159s Setting up libxml2:armhf (2.9.14+dfsg-1.3ubuntu2) ... 1159s Setting up libxmuu1:armhf (2:1.1.3-3build1) ... 1159s Setting up dbus-bin (1.14.10-4ubuntu2) ... 1159s Setting up info (7.1-3build1) ... 1159s Setting up liblocale-gettext-perl (1.07-6ubuntu4) ... 1159s Setting up gpg (2.4.4-2ubuntu15) ... 1159s Setting up libgudev-1.0-0:armhf (1:238-3ubuntu2) ... 1159s Setting up libpolkit-gobject-1-0:armhf (124-1ubuntu1) ... 1159s Setting up libbpf1:armhf (1:1.3.0-2build1) ... 1159s Setting up libmbim-glib4:armhf (1.31.2-0ubuntu2) ... 1159s Setting up rsync (3.2.7-1build1) ... 1160s rsync.service is a disabled or a static unit not running, not starting it. 1160s Setting up libudisks2-0:armhf (2.10.1-6) ... 1160s Setting up libkmod2:armhf (31+20240202-2ubuntu4) ... 1160s Setting up bolt (0.9.6-2build1) ... 1161s bolt.service is a disabled or a static unit not running, not starting it. 1161s Setting up gnupg-utils (2.4.4-2ubuntu15) ... 1161s Setting up initramfs-tools-bin (0.142ubuntu23) ... 1161s Setting up libctf0:armhf (2.42-4ubuntu1) ... 1161s Setting up cryptsetup-bin (2:2.7.0-1ubuntu2) ... 1161s Setting up python3.11-minimal (3.11.8-1build4) ... 1163s Setting up tcpdump (4.99.4-3ubuntu2) ... 1163s apparmor_parser: Unable to replace "tcpdump". apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1163s 1163s Setting up apt-utils (2.7.14) ... 1163s Setting up gpg-agent (2.4.4-2ubuntu15) ... 1164s Setting up libpython3.12-stdlib:armhf (3.12.2-4build3) ... 1164s Setting up wget (1.21.4-1ubuntu2) ... 1164s Setting up libxmlb2:armhf (0.3.15-1build1) ... 1164s Setting up btrfs-progs (6.6.3-1.1build1) ... 1164s Setting up libpython3.11-stdlib:armhf (3.11.8-1build4) ... 1164s Setting up python3.12 (3.12.2-4build3) ... 1167s Setting up gpgsm (2.4.4-2ubuntu15) ... 1167s Setting up inetutils-telnet (2:2.5-3ubuntu3) ... 1167s Setting up e2fsprogs (1.47.0-2.4~exp1ubuntu2) ... 1167s update-initramfs: deferring update (trigger activated) 1168s e2scrub_all.service is a disabled or a static unit not running, not starting it. 1168s Setting up libparted2t64:armhf (3.6-3.1build2) ... 1168s Setting up linux-headers-generic (6.8.0-20.20+1) ... 1168s Setting up dbus-daemon (1.14.10-4ubuntu2) ... 1168s Setting up libmbim-proxy (1.31.2-0ubuntu2) ... 1168s Setting up vim-tiny (2:9.1.0016-1ubuntu6) ... 1168s Setting up kmod (31+20240202-2ubuntu4) ... 1168s Setting up libnetplan1:armhf (1.0-1) ... 1168s Setting up man-db (2.12.0-3build4) ... 1169s Updating database of manual pages ... 1171s apparmor_parser: Unable to replace "/usr/bin/man". apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1171s 1172s man-db.service is a disabled or a static unit not running, not starting it. 1172s Setting up fdisk (2.39.3-9ubuntu2) ... 1172s Setting up libjson-glib-1.0-0:armhf (1.8.0-2build1) ... 1172s Setting up libsasl2-modules-db:armhf (2.1.28+dfsg1-5ubuntu1) ... 1172s Setting up libftdi1-2:armhf (1.5-6build4) ... 1172s Setting up perl (5.38.2-3.2) ... 1172s Setting up gir1.2-girepository-2.0:armhf (1.79.1-1ubuntu6) ... 1172s Setting up dbus (1.14.10-4ubuntu2) ... 1172s A reboot is required to replace the running dbus-daemon. 1172s Please reboot the system when convenient. 1172s Setting up shared-mime-info (2.4-1build1) ... 1173s Setting up libblockdev-utils3:armhf (3.1.0-1build1) ... 1173s Setting up libgssapi-krb5-2:armhf (1.20.1-6ubuntu1) ... 1173s Setting up udev (255.4-1ubuntu5) ... 1175s Setting up ftp (20230507-2build1) ... 1175s Setting up keyboxd (2.4.4-2ubuntu15) ... 1175s Setting up libdpkg-perl (1.22.6ubuntu4) ... 1175s Setting up libsasl2-2:armhf (2.1.28+dfsg1-5ubuntu1) ... 1175s Setting up libssh-4:armhf (0.10.6-2build1) ... 1175s Setting up libblockdev-nvme3:armhf (3.1.0-1build1) ... 1175s Setting up libblockdev-fs3:armhf (3.1.0-1build1) ... 1175s Setting up kpartx (0.9.4-5ubuntu6) ... 1175s Setting up libpam-systemd:armhf (255.4-1ubuntu5) ... 1175s Setting up libpolkit-agent-1-0:armhf (124-1ubuntu1) ... 1175s Setting up libgpgme11t64:armhf (1.18.0-4.1ubuntu3) ... 1175s Setting up netplan-generator (1.0-1) ... 1175s Removing 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 1175s Setting up initramfs-tools-core (0.142ubuntu23) ... 1175s Setting up binutils-arm-linux-gnueabihf (2.42-4ubuntu1) ... 1175s Setting up libarchive13t64:armhf (3.7.2-1.1ubuntu2) ... 1175s Setting up libldap2:armhf (2.6.7+dfsg-1~exp1ubuntu6) ... 1175s Setting up libpython3-stdlib:armhf (3.12.2-0ubuntu1) ... 1175s Setting up systemd-resolved (255.4-1ubuntu5) ... 1177s Setting up python3.11 (3.11.8-1build4) ... 1179s Setting up telnet (0.17+2.5-3ubuntu3) ... 1179s Setting up initramfs-tools (0.142ubuntu23) ... 1179s update-initramfs: deferring update (trigger activated) 1179s Setting up libblockdev-mdraid3:armhf (3.1.0-1build1) ... 1179s Setting up libcurl4t64:armhf (8.5.0-2ubuntu8) ... 1179s Setting up bind9-libs:armhf (1:9.18.24-0ubuntu3) ... 1179s Setting up libtirpc3t64:armhf (1.3.4+ds-1.1) ... 1179s Setting up e2fsprogs-l10n (1.47.0-2.4~exp1ubuntu2) ... 1179s Setting up libblockdev-swap3:armhf (3.1.0-1build1) ... 1179s Setting up plymouth (24.004.60-1ubuntu6) ... 1179s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 1179s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 1180s Setting up iproute2 (6.1.0-1ubuntu5) ... 1180s Setting up openssh-client (1:9.6p1-3ubuntu11) ... 1180s Setting up libgusb2:armhf (0.4.8-1build1) ... 1180s Setting up libblockdev-loop3:armhf (3.1.0-1build1) ... 1180s Setting up libcurl3t64-gnutls:armhf (8.5.0-2ubuntu8) ... 1180s Setting up parted (3.6-3.1build2) ... 1180s Setting up libqmi-glib5:armhf (1.35.2-0ubuntu1) ... 1180s Setting up python3 (3.12.2-0ubuntu1) ... 1181s Setting up binutils (2.42-4ubuntu1) ... 1181s Setting up python3-markupsafe (2.1.5-1build1) ... 1181s Setting up libblockdev3:armhf (3.1.0-1build1) ... 1181s Setting up libjcat1:armhf (0.2.0-2build2) ... 1181s Setting up dpkg-dev (1.22.6ubuntu4) ... 1181s Setting up libblockdev-part3:armhf (3.1.0-1build1) ... 1181s Setting up dirmngr (2.4.4-2ubuntu15) ... 1181s Setting up dbus-user-session (1.14.10-4ubuntu2) ... 1181s Setting up plymouth-theme-ubuntu-text (24.004.60-1ubuntu6) ... 1182s update-initramfs: deferring update (trigger activated) 1182s Setting up python3-cryptography (41.0.7-4build2) ... 1182s Setting up python3-gi (3.47.0-3build1) ... 1183s Setting up python3-typing-extensions (4.10.0-1) ... 1183s Setting up lsof (4.95.0-1build2) ... 1183s Setting up python3-pyrsistent:armhf (0.20.0-1build1) ... 1183s Setting up libnsl2:armhf (1.3.0-3build2) ... 1183s Setting up gnupg (2.4.4-2ubuntu15) ... 1183s Setting up python3-netplan (1.0-1) ... 1183s Setting up curl (8.5.0-2ubuntu8) ... 1183s Setting up libvolume-key1:armhf (0.3.12-7build1) ... 1183s Setting up bind9-host (1:9.18.24-0ubuntu3) ... 1183s Setting up python3-lib2to3 (3.12.2-3ubuntu1.1) ... 1184s Setting up python3-pkg-resources (68.1.2-2ubuntu1) ... 1184s Setting up python3-distutils (3.12.2-3ubuntu1.1) ... 1185s python3.12: can't get files for byte-compilation 1185s Setting up openssh-sftp-server (1:9.6p1-3ubuntu11) ... 1185s Setting up python3-dbus (1.3.2-5build2) ... 1185s Setting up python3-setuptools (68.1.2-2ubuntu1) ... 1186s Setting up gpg-wks-client (2.4.4-2ubuntu15) ... 1186s Setting up openssh-server (1:9.6p1-3ubuntu11) ... 1187s Replacing config file /etc/ssh/sshd_config with new version 1189s Created symlink /etc/systemd/system/ssh.service.requires/ssh.socket → /usr/lib/systemd/system/ssh.socket. 1209s Setting up libblockdev-crypto3:armhf (3.1.0-1build1) ... 1209s Setting up python3-gdbm:armhf (3.12.2-3ubuntu1.1) ... 1209s Setting up python3-apt (2.7.7) ... 1209s Setting up libfwupd2:armhf (1.9.15-2) ... 1209s Setting up python3-yaml (6.0.1-2build1) ... 1209s Setting up libqmi-proxy (1.35.2-0ubuntu1) ... 1209s Setting up netplan.io (1.0-1) ... 1209s Setting up bind9-dnsutils (1:9.18.24-0ubuntu3) ... 1209s Setting up ubuntu-pro-client (31.2.2) ... 1210s apparmor_parser: Unable to replace "ubuntu_pro_apt_news". apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 1210s 1213s Setting up fwupd (1.9.15-2) ... 1213s fwupd-offline-update.service is a disabled or a static unit not running, not starting it. 1214s fwupd-refresh.service is a disabled or a static unit not running, not starting it. 1214s fwupd.service is a disabled or a static unit not running, not starting it. 1214s Setting up ubuntu-pro-client-l10n (31.2.2) ... 1214s Setting up udisks2 (2.10.1-6) ... 1214s sda: Failed to write 'change' to '/sys/devices/platform/LNRO0005:1f/virtio2/host0/target0:0:0/0:0:0:0/block/sda/uevent': Permission denied 1214s sda1: Failed to write 'change' to '/sys/devices/platform/LNRO0005:1f/virtio2/host0/target0:0:0/0:0:0:0/block/sda/sda1/uevent': Permission denied 1214s sda15: Failed to write 'change' to '/sys/devices/platform/LNRO0005:1f/virtio2/host0/target0:0:0/0:0:0:0/block/sda/sda15/uevent': Permission denied 1214s sda2: Failed to write 'change' to '/sys/devices/platform/LNRO0005:1f/virtio2/host0/target0:0:0/0:0:0:0/block/sda/sda2/uevent': Permission denied 1214s loop0: Failed to write 'change' to '/sys/devices/virtual/block/loop0/uevent': Permission denied 1214s loop1: Failed to write 'change' to '/sys/devices/virtual/block/loop1/uevent': Permission denied 1214s loop2: Failed to write 'change' to '/sys/devices/virtual/block/loop2/uevent': Permission denied 1214s loop3: Failed to write 'change' to '/sys/devices/virtual/block/loop3/uevent': Permission denied 1214s loop4: Failed to write 'change' to '/sys/devices/virtual/block/loop4/uevent': Permission denied 1214s loop5: Failed to write 'change' to '/sys/devices/virtual/block/loop5/uevent': Permission denied 1214s loop6: Failed to write 'change' to '/sys/devices/virtual/block/loop6/uevent': Permission denied 1214s loop7: Failed to write 'change' to '/sys/devices/virtual/block/loop7/uevent': Permission denied 1215s Setting up cloud-init (24.1.2-0ubuntu1) ... 1218s Setting up ubuntu-minimal (1.536build1) ... 1218s Setting up ubuntu-standard (1.536build1) ... 1218s Processing triggers for libc-bin (2.39-0ubuntu6) ... 1218s Processing triggers for ufw (0.36.2-5) ... 1218s Processing triggers for install-info (7.1-3build1) ... 1218s Processing triggers for initramfs-tools (0.142ubuntu23) ... 1221s Reading package lists... 1222s Building dependency tree... 1222s Reading state information... 1224s The following packages will be REMOVED: 1224s linux-headers-6.8.0-11* python3-distutils* python3-lib2to3* 1224s 0 upgraded, 0 newly installed, 3 to remove and 1 not upgraded. 1224s After this operation, 86.5 MB disk space will be freed. 1224s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 78647 files and directories currently installed.) 1224s Removing linux-headers-6.8.0-11 (6.8.0-11.11) ... 1226s Removing python3-distutils (3.12.2-3ubuntu1.1) ... 1227s Removing python3-lib2to3 (3.12.2-3ubuntu1.1) ... 1229s autopkgtest [12:38:29]: rebooting testbed after setup commands that affected boot 1332s Reading package lists... 1332s Building dependency tree... 1332s Reading state information... 1333s Starting pkgProblemResolver with broken count: 0 1333s Starting 2 pkgProblemResolver with broken count: 0 1333s Done 1335s The following additional packages will be installed: 1335s build-essential cpp cpp-13 cpp-13-arm-linux-gnueabihf 1335s cpp-arm-linux-gnueabihf dctrl-tools fontconfig fontconfig-config 1335s fonts-dejavu-core fonts-dejavu-mono fonts-glyphicons-halflings fonts-mathjax 1335s g++ g++-13 g++-13-arm-linux-gnueabihf g++-arm-linux-gnueabihf gcc gcc-13 1335s gcc-13-arm-linux-gnueabihf gcc-arm-linux-gnueabihf gfortran gfortran-13 1335s gfortran-13-arm-linux-gnueabihf gfortran-arm-linux-gnueabihf icu-devtools 1335s libasan8 libatomic1 libblas-dev libblas3 libbz2-dev libc-dev-bin libc6-dev 1335s libcairo2 libcc1-0 libcrypt-dev libdatrie1 libdeflate0 libfontconfig1 1335s libfreetype6 libgcc-13-dev libgfortran-13-dev libgfortran5 libgomp1 1335s libgraphite2-3 libharfbuzz0b libice6 libicu-dev libisl23 libjbig0 1335s libjpeg-dev libjpeg-turbo8 libjpeg-turbo8-dev libjpeg8 libjpeg8-dev 1335s libjs-bootstrap libjs-highlight.js libjs-jquery libjs-jquery-datatables 1335s libjs-mathjax liblapack-dev liblapack3 liblerc4 liblzma-dev libmpc3 1335s libncurses-dev libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 1335s libpaper-utils libpaper1 libpcre2-16-0 libpcre2-32-0 libpcre2-dev 1335s libpcre2-posix3 libpixman-1-0 libpkgconf3 libpng-dev libreadline-dev 1335s libsharpyuv0 libsm6 libstdc++-13-dev libtcl8.6 libthai-data libthai0 1335s libtiff6 libtk8.6 libubsan1 libwebp7 libxcb-render0 libxcb-shm0 libxft2 1335s libxrender1 libxss1 libxt6t64 linux-libc-dev node-normalize.css pkg-config 1335s pkg-r-autopkgtest pkgconf pkgconf-bin r-base-core r-base-dev 1335s r-cran-base64enc r-cran-cli r-cran-colorspace r-cran-commonmark 1335s r-cran-evaluate r-cran-fansi r-cran-farver r-cran-ggplot2 r-cran-glue 1335s r-cran-gtable r-cran-highr r-cran-isoband r-cran-knitr r-cran-labeling 1335s r-cran-lattice r-cran-lifecycle r-cran-magrittr r-cran-markdown r-cran-mass 1335s r-cran-matrix r-cran-matrixstats r-cran-mgcv r-cran-munsell r-cran-nlme 1335s r-cran-pillar r-cran-pkgconfig r-cran-r6 r-cran-rcolorbrewer r-cran-rlang 1335s r-cran-scales r-cran-tibble r-cran-utf8 r-cran-vctrs r-cran-viridislite 1335s r-cran-withr r-cran-xfun r-cran-yaml rpcsvc-proto unzip x11-common xdg-utils 1335s zip zlib1g-dev 1335s Suggested packages: 1335s cpp-doc gcc-13-locales cpp-13-doc debtags gcc-13-doc gcc-multilib 1335s manpages-dev autoconf automake libtool flex bison gdb gcc-doc 1335s gdb-arm-linux-gnueabihf gfortran-doc gfortran-13-doc libcoarrays-dev 1335s liblapack-doc glibc-doc icu-doc fonts-mathjax-extras fonts-stix 1335s libjs-mathjax-doc liblzma-doc ncurses-doc readline-doc libstdc++-13-doc 1335s tcl8.6 tk8.6 libjs-html5shiv elpa-ess r-doc-info | r-doc-pdf r-mathlib 1335s r-base-html texlive-base texlive-latex-base texlive-plain-generic 1335s texlive-fonts-recommended texlive-fonts-extra texlive-extra-utils 1335s texlive-latex-recommended texlive-latex-extra texinfo r-cran-kernsmooth 1335s r-cran-kernlab r-cran-mvtnorm r-cran-vcd r-cran-shiny r-cran-shinyjs 1335s r-cran-dplyr r-cran-png r-cran-jpeg r-cran-rmarkdown r-cran-viridis 1335s r-cran-covr r-cran-magick r-cran-sf r-cran-bit64 r-cran-dbi 1335s r-cran-formattable r-cran-nanotime r-cran-palmerpenguins r-cran-stringi 1335s r-cran-survival r-cran-units r-cran-vdiffr r-cran-testthat r-cran-bench 1335s r-cran-blob r-cran-brio r-cran-callr r-cran-crayon r-cran-here r-cran-hms 1335s r-cran-htmltools r-cran-pkgbuild r-cran-pkgload r-cran-purrr r-cran-tidyr 1335s Recommended packages: 1335s bzip2-doc manpages manpages-dev libc-devtools javascript-common libpng-tools 1335s r-recommended r-doc-html r-cran-callr r-cran-covr r-cran-crayon 1335s r-cran-digest r-cran-htmltools r-cran-htmlwidgets r-cran-mockery 1335s r-cran-processx r-cran-ps r-cran-rmarkdown r-cran-rprojroot 1335s r-cran-rstudioapi r-cran-testthat r-cran-whoami r-cran-curl r-cran-xml2 1335s r-cran-unitizer r-cran-dplyr r-cran-hexbin r-cran-hmisc r-cran-mapproj 1335s r-cran-maps r-cran-multcomp r-cran-profvis r-cran-quantreg r-cran-ragg 1335s r-cran-rpart r-cran-sf r-cran-svglite r-cran-vdiffr r-cran-dbi 1335s r-cran-rsqlite r-cran-waldo r-cran-testit r-cran-bslib r-cran-codetools 1335s r-cran-formatr r-cran-gridsvg r-cran-jpeg r-cran-magick r-cran-png 1335s r-cran-reticulate r-cran-rgl r-cran-sass r-cran-tikzdevice r-cran-tinytex 1335s r-cran-webshot node-highlight.js r-cran-lintr r-cran-tidyverse r-cran-rcurl 1335s r-cran-r.devices r-cran-r.rsp r-cran-lubridate r-cran-fs r-cran-usethis 1335s r-cran-bit64 r-cran-dichromat r-cran-hms r-cran-stringi r-cran-data.table 1335s r-cran-mockr r-cran-formattable r-cran-generics r-cran-pkgdown 1335s r-cran-zeallot r-cran-mime r-cran-remotes r-cran-renv r-cran-jsonlite 1335s r-cran-runit libfile-mimeinfo-perl libnet-dbus-perl libx11-protocol-perl 1335s x11-utils x11-xserver-utils 1335s The following NEW packages will be installed: 1335s autopkgtest-satdep build-essential cpp cpp-13 cpp-13-arm-linux-gnueabihf 1335s cpp-arm-linux-gnueabihf dctrl-tools fontconfig fontconfig-config 1335s fonts-dejavu-core fonts-dejavu-mono fonts-glyphicons-halflings fonts-mathjax 1335s g++ g++-13 g++-13-arm-linux-gnueabihf g++-arm-linux-gnueabihf gcc gcc-13 1335s gcc-13-arm-linux-gnueabihf gcc-arm-linux-gnueabihf gfortran gfortran-13 1335s gfortran-13-arm-linux-gnueabihf gfortran-arm-linux-gnueabihf icu-devtools 1335s libasan8 libatomic1 libblas-dev libblas3 libbz2-dev libc-dev-bin libc6-dev 1335s libcairo2 libcc1-0 libcrypt-dev libdatrie1 libdeflate0 libfontconfig1 1335s libfreetype6 libgcc-13-dev libgfortran-13-dev libgfortran5 libgomp1 1335s libgraphite2-3 libharfbuzz0b libice6 libicu-dev libisl23 libjbig0 1335s libjpeg-dev libjpeg-turbo8 libjpeg-turbo8-dev libjpeg8 libjpeg8-dev 1335s libjs-bootstrap libjs-highlight.js libjs-jquery libjs-jquery-datatables 1335s libjs-mathjax liblapack-dev liblapack3 liblerc4 liblzma-dev libmpc3 1335s libncurses-dev libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 1335s libpaper-utils libpaper1 libpcre2-16-0 libpcre2-32-0 libpcre2-dev 1335s libpcre2-posix3 libpixman-1-0 libpkgconf3 libpng-dev libreadline-dev 1335s libsharpyuv0 libsm6 libstdc++-13-dev libtcl8.6 libthai-data libthai0 1335s libtiff6 libtk8.6 libubsan1 libwebp7 libxcb-render0 libxcb-shm0 libxft2 1336s libxrender1 libxss1 libxt6t64 linux-libc-dev node-normalize.css pkg-config 1336s pkg-r-autopkgtest pkgconf pkgconf-bin r-base-core r-base-dev 1336s r-cran-base64enc r-cran-cli r-cran-colorspace r-cran-commonmark 1336s r-cran-evaluate r-cran-fansi r-cran-farver r-cran-ggplot2 r-cran-glue 1336s r-cran-gtable r-cran-highr r-cran-isoband r-cran-knitr r-cran-labeling 1336s r-cran-lattice r-cran-lifecycle r-cran-magrittr r-cran-markdown r-cran-mass 1336s r-cran-matrix r-cran-matrixstats r-cran-mgcv r-cran-munsell r-cran-nlme 1336s r-cran-pillar r-cran-pkgconfig r-cran-r6 r-cran-rcolorbrewer r-cran-rlang 1336s r-cran-scales r-cran-tibble r-cran-utf8 r-cran-vctrs r-cran-viridislite 1336s r-cran-withr r-cran-xfun r-cran-yaml rpcsvc-proto unzip x11-common xdg-utils 1336s zip zlib1g-dev 1336s 0 upgraded, 146 newly installed, 0 to remove and 1 not upgraded. 1336s Need to get 150 MB/150 MB of archives. 1336s After this operation, 397 MB of additional disk space will be used. 1336s Get:1 /tmp/autopkgtest.5uVHjq/2-autopkgtest-satdep.deb autopkgtest-satdep armhf 0 [752 B] 1336s Get:2 http://ftpmaster.internal/ubuntu noble/main armhf libc-dev-bin armhf 2.39-0ubuntu6 [19.1 kB] 1336s Get:3 http://ftpmaster.internal/ubuntu noble-proposed/main armhf linux-libc-dev armhf 6.8.0-20.20 [1555 kB] 1336s Get:4 http://ftpmaster.internal/ubuntu noble/main armhf libcrypt-dev armhf 1:4.4.36-4 [136 kB] 1336s Get:5 http://ftpmaster.internal/ubuntu noble/main armhf rpcsvc-proto armhf 1.4.2-0ubuntu6 [63.7 kB] 1336s Get:6 http://ftpmaster.internal/ubuntu noble/main armhf libc6-dev armhf 2.39-0ubuntu6 [1351 kB] 1336s Get:7 http://ftpmaster.internal/ubuntu noble/main armhf libisl23 armhf 0.26-3 [595 kB] 1336s Get:8 http://ftpmaster.internal/ubuntu noble/main armhf libmpc3 armhf 1.3.1-1 [46.4 kB] 1336s Get:9 http://ftpmaster.internal/ubuntu noble-proposed/main armhf cpp-13-arm-linux-gnueabihf armhf 13.2.0-21ubuntu1 [8757 kB] 1337s Get:10 http://ftpmaster.internal/ubuntu noble-proposed/main armhf cpp-13 armhf 13.2.0-21ubuntu1 [1028 B] 1337s Get:11 http://ftpmaster.internal/ubuntu noble/main armhf cpp-arm-linux-gnueabihf armhf 4:13.2.0-7ubuntu1 [5320 B] 1337s Get:12 http://ftpmaster.internal/ubuntu noble/main armhf cpp armhf 4:13.2.0-7ubuntu1 [22.4 kB] 1337s Get:13 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libcc1-0 armhf 14-20240315-1ubuntu1 [39.0 kB] 1337s Get:14 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgomp1 armhf 14-20240315-1ubuntu1 [125 kB] 1337s Get:15 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libatomic1 armhf 14-20240315-1ubuntu1 [7824 B] 1337s Get:16 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libasan8 armhf 14-20240315-1ubuntu1 [2941 kB] 1337s Get:17 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libubsan1 armhf 14-20240315-1ubuntu1 [1152 kB] 1337s Get:18 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgcc-13-dev armhf 13.2.0-21ubuntu1 [899 kB] 1337s Get:19 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gcc-13-arm-linux-gnueabihf armhf 13.2.0-21ubuntu1 [16.8 MB] 1338s Get:20 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gcc-13 armhf 13.2.0-21ubuntu1 [450 kB] 1338s Get:21 http://ftpmaster.internal/ubuntu noble/main armhf gcc-arm-linux-gnueabihf armhf 4:13.2.0-7ubuntu1 [1220 B] 1338s Get:22 http://ftpmaster.internal/ubuntu noble/main armhf gcc armhf 4:13.2.0-7ubuntu1 [5022 B] 1338s Get:23 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libstdc++-13-dev armhf 13.2.0-21ubuntu1 [2456 kB] 1339s Get:24 http://ftpmaster.internal/ubuntu noble-proposed/main armhf g++-13-arm-linux-gnueabihf armhf 13.2.0-21ubuntu1 [9938 kB] 1339s Get:25 http://ftpmaster.internal/ubuntu noble-proposed/main armhf g++-13 armhf 13.2.0-21ubuntu1 [14.5 kB] 1339s Get:26 http://ftpmaster.internal/ubuntu noble/main armhf g++-arm-linux-gnueabihf armhf 4:13.2.0-7ubuntu1 [966 B] 1339s Get:27 http://ftpmaster.internal/ubuntu noble/main armhf g++ armhf 4:13.2.0-7ubuntu1 [1090 B] 1339s Get:28 http://ftpmaster.internal/ubuntu noble/main armhf build-essential armhf 12.10ubuntu1 [4928 B] 1339s Get:29 http://ftpmaster.internal/ubuntu noble/main armhf dctrl-tools armhf 2.24-3build2 [57.2 kB] 1339s Get:30 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libfreetype6 armhf 2.13.2+dfsg-1build2 [331 kB] 1339s Get:31 http://ftpmaster.internal/ubuntu noble/main armhf fonts-dejavu-mono all 2.37-8 [502 kB] 1340s Get:32 http://ftpmaster.internal/ubuntu noble/main armhf fonts-dejavu-core all 2.37-8 [835 kB] 1340s Get:33 http://ftpmaster.internal/ubuntu noble-proposed/main armhf fontconfig-config armhf 2.15.0-1.1ubuntu1 [37.4 kB] 1340s Get:34 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libfontconfig1 armhf 2.15.0-1.1ubuntu1 [113 kB] 1340s Get:35 http://ftpmaster.internal/ubuntu noble-proposed/main armhf fontconfig armhf 2.15.0-1.1ubuntu1 [189 kB] 1340s Get:36 http://ftpmaster.internal/ubuntu noble/universe armhf fonts-glyphicons-halflings all 1.009~3.4.1+dfsg-3 [118 kB] 1340s Get:37 http://ftpmaster.internal/ubuntu noble/main armhf fonts-mathjax all 2.7.9+dfsg-1 [2208 kB] 1340s Get:38 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgfortran5 armhf 14-20240315-1ubuntu1 [312 kB] 1340s Get:39 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgfortran-13-dev armhf 13.2.0-21ubuntu1 [359 kB] 1340s Get:40 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gfortran-13-arm-linux-gnueabihf armhf 13.2.0-21ubuntu1 [9179 kB] 1341s Get:41 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gfortran-13 armhf 13.2.0-21ubuntu1 [10.9 kB] 1341s Get:42 http://ftpmaster.internal/ubuntu noble/main armhf gfortran-arm-linux-gnueabihf armhf 4:13.2.0-7ubuntu1 [1024 B] 1341s Get:43 http://ftpmaster.internal/ubuntu noble/main armhf gfortran armhf 4:13.2.0-7ubuntu1 [1166 B] 1341s Get:44 http://ftpmaster.internal/ubuntu noble/main armhf icu-devtools armhf 74.2-1ubuntu1 [201 kB] 1341s Get:45 http://ftpmaster.internal/ubuntu noble/main armhf libblas3 armhf 3.12.0-3 [123 kB] 1341s Get:46 http://ftpmaster.internal/ubuntu noble/main armhf libblas-dev armhf 3.12.0-3 [132 kB] 1341s Get:47 http://ftpmaster.internal/ubuntu noble/main armhf libbz2-dev armhf 1.0.8-5ubuntu1 [30.4 kB] 1341s Get:48 http://ftpmaster.internal/ubuntu noble/main armhf libpixman-1-0 armhf 0.42.2-1 [184 kB] 1341s Get:49 http://ftpmaster.internal/ubuntu noble/main armhf libxcb-render0 armhf 1.15-1 [15.2 kB] 1341s Get:50 http://ftpmaster.internal/ubuntu noble/main armhf libxcb-shm0 armhf 1.15-1 [5852 B] 1341s Get:51 http://ftpmaster.internal/ubuntu noble/main armhf libxrender1 armhf 1:0.9.10-1.1 [16.5 kB] 1341s Get:52 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libcairo2 armhf 1.18.0-1ubuntu1 [482 kB] 1341s Get:53 http://ftpmaster.internal/ubuntu noble/main armhf libdatrie1 armhf 0.2.13-3 [16.9 kB] 1341s Get:54 http://ftpmaster.internal/ubuntu noble/main armhf libdeflate0 armhf 1.19-1 [41.3 kB] 1341s Get:55 http://ftpmaster.internal/ubuntu noble/main armhf libgraphite2-3 armhf 1.3.14-2 [72.7 kB] 1341s Get:56 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libharfbuzz0b armhf 8.3.0-2build1 [446 kB] 1341s Get:57 http://ftpmaster.internal/ubuntu noble/main armhf x11-common all 1:7.7+23ubuntu2 [23.4 kB] 1341s Get:58 http://ftpmaster.internal/ubuntu noble/main armhf libice6 armhf 2:1.0.10-1build2 [36.4 kB] 1341s Get:59 http://ftpmaster.internal/ubuntu noble/main armhf libicu-dev armhf 74.2-1ubuntu1 [11.6 MB] 1342s Get:60 http://ftpmaster.internal/ubuntu noble/main armhf libjpeg-turbo8 armhf 2.1.5-2ubuntu1 [123 kB] 1342s Get:61 http://ftpmaster.internal/ubuntu noble/main armhf libjpeg-turbo8-dev armhf 2.1.5-2ubuntu1 [263 kB] 1342s Get:62 http://ftpmaster.internal/ubuntu noble/main armhf libjpeg8 armhf 8c-2ubuntu11 [2148 B] 1342s Get:63 http://ftpmaster.internal/ubuntu noble/main armhf libjpeg8-dev armhf 8c-2ubuntu11 [1484 B] 1342s Get:64 http://ftpmaster.internal/ubuntu noble/main armhf libjpeg-dev armhf 8c-2ubuntu11 [1482 B] 1342s Get:65 http://ftpmaster.internal/ubuntu noble/universe armhf libjs-bootstrap all 3.4.1+dfsg-3 [129 kB] 1342s Get:66 http://ftpmaster.internal/ubuntu noble/universe armhf libjs-highlight.js all 9.18.5+dfsg1-2 [385 kB] 1342s Get:67 http://ftpmaster.internal/ubuntu noble/main armhf libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [328 kB] 1342s Get:68 http://ftpmaster.internal/ubuntu noble/universe armhf libjs-jquery-datatables all 1.11.5+dfsg-2 [146 kB] 1342s Get:69 http://ftpmaster.internal/ubuntu noble/main armhf liblapack3 armhf 3.12.0-3 [2085 kB] 1342s Get:70 http://ftpmaster.internal/ubuntu noble/main armhf liblapack-dev armhf 3.12.0-3 [2177 kB] 1342s Get:71 http://ftpmaster.internal/ubuntu noble/main armhf liblerc4 armhf 4.0.0+ds-4ubuntu1 [152 kB] 1342s Get:72 http://ftpmaster.internal/ubuntu noble/main armhf libncurses-dev armhf 6.4+20240113-1ubuntu1 [501 kB] 1342s Get:73 http://ftpmaster.internal/ubuntu noble/main armhf libthai-data all 0.1.29-2 [158 kB] 1342s Get:74 http://ftpmaster.internal/ubuntu noble/main armhf libthai0 armhf 0.1.29-2 [15.1 kB] 1342s Get:75 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpango-1.0-0 armhf 1.52.1+ds-1 [206 kB] 1343s Get:76 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpangoft2-1.0-0 armhf 1.52.1+ds-1 [36.4 kB] 1343s Get:77 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpangocairo-1.0-0 armhf 1.52.1+ds-1 [24.9 kB] 1343s Get:78 http://ftpmaster.internal/ubuntu noble/main armhf libpaper1 armhf 1.1.29 [12.5 kB] 1343s Get:79 http://ftpmaster.internal/ubuntu noble/main armhf libpaper-utils armhf 1.1.29 [8170 B] 1343s Get:80 http://ftpmaster.internal/ubuntu noble/main armhf libpcre2-16-0 armhf 10.42-4ubuntu1 [180 kB] 1343s Get:81 http://ftpmaster.internal/ubuntu noble/main armhf libpcre2-32-0 armhf 10.42-4ubuntu1 [171 kB] 1343s Get:82 http://ftpmaster.internal/ubuntu noble/main armhf libpcre2-posix3 armhf 10.42-4ubuntu1 [6096 B] 1343s Get:83 http://ftpmaster.internal/ubuntu noble/main armhf libpcre2-dev armhf 10.42-4ubuntu1 [664 kB] 1343s Get:84 http://ftpmaster.internal/ubuntu noble/main armhf libpkgconf3 armhf 1.8.1-2 [26.3 kB] 1343s Get:85 http://ftpmaster.internal/ubuntu noble-proposed/main armhf zlib1g-dev armhf 1:1.3.dfsg-3.1ubuntu1 [880 kB] 1343s Get:86 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpng-dev armhf 1.6.43-3 [248 kB] 1343s Get:87 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libreadline-dev armhf 8.2-4 [153 kB] 1343s Get:88 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsharpyuv0 armhf 1.3.2-0.4build2 [13.6 kB] 1343s Get:89 http://ftpmaster.internal/ubuntu noble/main armhf libsm6 armhf 2:1.2.3-1build2 [15.1 kB] 1343s Get:90 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libtcl8.6 armhf 8.6.14+dfsg-1 [903 kB] 1343s Get:91 http://ftpmaster.internal/ubuntu noble/main armhf libjbig0 armhf 2.1-6.1ubuntu1 [24.9 kB] 1343s Get:92 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libwebp7 armhf 1.3.2-0.4build2 [183 kB] 1343s Get:93 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libtiff6 armhf 4.5.1+git230720-4ubuntu1 [178 kB] 1343s Get:94 http://ftpmaster.internal/ubuntu noble/main armhf libxft2 armhf 2.3.6-1 [36.8 kB] 1343s Get:95 http://ftpmaster.internal/ubuntu noble/main armhf libxss1 armhf 1:1.2.3-1build2 [7580 B] 1343s Get:96 http://ftpmaster.internal/ubuntu noble/main armhf libtk8.6 armhf 8.6.14-1 [681 kB] 1343s Get:97 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libxt6t64 armhf 1:1.2.1-1.2 [145 kB] 1343s Get:98 http://ftpmaster.internal/ubuntu noble/universe armhf node-normalize.css all 8.0.1-5 [10.8 kB] 1343s Get:99 http://ftpmaster.internal/ubuntu noble/main armhf pkgconf-bin armhf 1.8.1-2 [20.6 kB] 1343s Get:100 http://ftpmaster.internal/ubuntu noble/main armhf pkgconf armhf 1.8.1-2 [16.7 kB] 1343s Get:101 http://ftpmaster.internal/ubuntu noble/main armhf pkg-config armhf 1.8.1-2 [7170 B] 1343s Get:102 http://ftpmaster.internal/ubuntu noble/main armhf zip armhf 3.0-13 [162 kB] 1343s Get:103 http://ftpmaster.internal/ubuntu noble/main armhf unzip armhf 6.0-28ubuntu3 [163 kB] 1344s Get:104 http://ftpmaster.internal/ubuntu noble/main armhf xdg-utils all 1.1.3-4.1ubuntu3 [62.0 kB] 1344s Get:105 http://ftpmaster.internal/ubuntu noble-proposed/universe armhf r-base-core armhf 4.3.3-2build1 [26.6 MB] 1356s Get:106 http://ftpmaster.internal/ubuntu noble-proposed/main armhf liblzma-dev armhf 5.6.0-0.2 [166 kB] 1356s Get:107 http://ftpmaster.internal/ubuntu noble-proposed/universe armhf r-base-dev all 4.3.3-2build1 [4334 B] 1356s Get:108 http://ftpmaster.internal/ubuntu noble/universe armhf pkg-r-autopkgtest all 20231212ubuntu1 [6448 B] 1356s Get:109 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-base64enc armhf 0.1-3-3 [27.3 kB] 1356s Get:110 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-cli armhf 3.6.2-1 [1363 kB] 1356s Get:111 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-colorspace armhf 2.1-0+dfsg-1 [1538 kB] 1356s Get:112 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-commonmark armhf 1.9.1-1 [110 kB] 1356s Get:113 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-evaluate all 0.23-1 [90.2 kB] 1356s Get:114 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-fansi armhf 1.0.5-1 [611 kB] 1357s Get:115 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-farver armhf 2.1.1-1 [1346 kB] 1357s Get:116 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-glue armhf 1.7.0-1 [153 kB] 1357s Get:117 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-rlang armhf 1.1.3-1 [1658 kB] 1357s Get:118 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-lifecycle all 1.0.4+dfsg-1 [110 kB] 1357s Get:119 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-gtable all 0.3.4+dfsg-1 [191 kB] 1357s Get:120 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-isoband armhf 0.2.7-1 [1477 kB] 1357s Get:121 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-mass armhf 7.3-60.0.1-1 [1118 kB] 1358s Get:122 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-lattice armhf 0.22-5-1 [1341 kB] 1358s Get:123 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-nlme armhf 3.1.164-1 [2252 kB] 1358s Get:124 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-matrix armhf 1.6-5-1 [3762 kB] 1359s Get:125 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-mgcv armhf 1.9-1-1 [3205 kB] 1359s Get:126 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-labeling all 0.4.3-1 [62.1 kB] 1359s Get:127 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-munsell all 0.5.0-2build1 [208 kB] 1360s Get:128 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-r6 all 2.5.1-1 [99.0 kB] 1360s Get:129 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-rcolorbrewer all 1.1-3-1build1 [55.4 kB] 1360s Get:130 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-viridislite all 0.4.2-2 [1088 kB] 1360s Get:131 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-scales all 1.3.0-1 [603 kB] 1360s Get:132 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-magrittr armhf 2.0.3-1 [154 kB] 1360s Get:133 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-utf8 armhf 1.2.4-1 [136 kB] 1360s Get:134 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-vctrs armhf 0.6.5-1 [1310 kB] 1360s Get:135 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-pillar all 1.9.0+dfsg-1 [464 kB] 1360s Get:136 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-pkgconfig all 2.0.3-2build1 [19.7 kB] 1360s Get:137 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-tibble armhf 3.2.1+dfsg-2 [415 kB] 1360s Get:138 http://ftpmaster.internal/ubuntu noble-proposed/universe armhf r-cran-withr all 3.0.0+dfsg-1 [228 kB] 1360s Get:139 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-ggplot2 all 3.4.4+dfsg-1 [3411 kB] 1361s Get:140 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-xfun armhf 0.41+dfsg-1 [415 kB] 1361s Get:141 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-highr all 0.10+dfsg-1 [38.3 kB] 1361s Get:142 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-yaml armhf 2.3.8-1 [99.0 kB] 1361s Get:143 http://ftpmaster.internal/ubuntu noble/main armhf libjs-mathjax all 2.7.9+dfsg-1 [5665 kB] 1362s Get:144 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-knitr all 1.45+dfsg-1 [917 kB] 1362s Get:145 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-markdown all 1.12+dfsg-1 [179 kB] 1362s Get:146 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-matrixstats armhf 1.2.0-1 [478 kB] 1364s Preconfiguring packages ... 1364s Fetched 150 MB in 26s (5703 kB/s) 1364s Selecting previously unselected package libc-dev-bin. 1364s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 58436 files and directories currently installed.) 1364s Preparing to unpack .../000-libc-dev-bin_2.39-0ubuntu6_armhf.deb ... 1364s Unpacking libc-dev-bin (2.39-0ubuntu6) ... 1364s Selecting previously unselected package linux-libc-dev:armhf. 1364s Preparing to unpack .../001-linux-libc-dev_6.8.0-20.20_armhf.deb ... 1364s Unpacking linux-libc-dev:armhf (6.8.0-20.20) ... 1364s Selecting previously unselected package libcrypt-dev:armhf. 1364s Preparing to unpack .../002-libcrypt-dev_1%3a4.4.36-4_armhf.deb ... 1364s Unpacking libcrypt-dev:armhf (1:4.4.36-4) ... 1364s Selecting previously unselected package rpcsvc-proto. 1364s Preparing to unpack .../003-rpcsvc-proto_1.4.2-0ubuntu6_armhf.deb ... 1364s Unpacking rpcsvc-proto (1.4.2-0ubuntu6) ... 1364s Selecting previously unselected package libc6-dev:armhf. 1365s Preparing to unpack .../004-libc6-dev_2.39-0ubuntu6_armhf.deb ... 1365s Unpacking libc6-dev:armhf (2.39-0ubuntu6) ... 1365s Selecting previously unselected package libisl23:armhf. 1365s Preparing to unpack .../005-libisl23_0.26-3_armhf.deb ... 1365s Unpacking libisl23:armhf (0.26-3) ... 1365s Selecting previously unselected package libmpc3:armhf. 1365s Preparing to unpack .../006-libmpc3_1.3.1-1_armhf.deb ... 1365s Unpacking libmpc3:armhf (1.3.1-1) ... 1365s Selecting previously unselected package cpp-13-arm-linux-gnueabihf. 1365s Preparing to unpack .../007-cpp-13-arm-linux-gnueabihf_13.2.0-21ubuntu1_armhf.deb ... 1365s Unpacking cpp-13-arm-linux-gnueabihf (13.2.0-21ubuntu1) ... 1365s Selecting previously unselected package cpp-13. 1365s Preparing to unpack .../008-cpp-13_13.2.0-21ubuntu1_armhf.deb ... 1365s Unpacking cpp-13 (13.2.0-21ubuntu1) ... 1365s Selecting previously unselected package cpp-arm-linux-gnueabihf. 1365s Preparing to unpack .../009-cpp-arm-linux-gnueabihf_4%3a13.2.0-7ubuntu1_armhf.deb ... 1365s Unpacking cpp-arm-linux-gnueabihf (4:13.2.0-7ubuntu1) ... 1365s Selecting previously unselected package cpp. 1365s Preparing to unpack .../010-cpp_4%3a13.2.0-7ubuntu1_armhf.deb ... 1365s Unpacking cpp (4:13.2.0-7ubuntu1) ... 1365s Selecting previously unselected package libcc1-0:armhf. 1366s Preparing to unpack .../011-libcc1-0_14-20240315-1ubuntu1_armhf.deb ... 1366s Unpacking libcc1-0:armhf (14-20240315-1ubuntu1) ... 1366s Selecting previously unselected package libgomp1:armhf. 1366s Preparing to unpack .../012-libgomp1_14-20240315-1ubuntu1_armhf.deb ... 1366s Unpacking libgomp1:armhf (14-20240315-1ubuntu1) ... 1366s Selecting previously unselected package libatomic1:armhf. 1366s Preparing to unpack .../013-libatomic1_14-20240315-1ubuntu1_armhf.deb ... 1366s Unpacking libatomic1:armhf (14-20240315-1ubuntu1) ... 1366s Selecting previously unselected package libasan8:armhf. 1366s Preparing to unpack .../014-libasan8_14-20240315-1ubuntu1_armhf.deb ... 1366s Unpacking libasan8:armhf (14-20240315-1ubuntu1) ... 1366s Selecting previously unselected package libubsan1:armhf. 1366s Preparing to unpack .../015-libubsan1_14-20240315-1ubuntu1_armhf.deb ... 1366s Unpacking libubsan1:armhf (14-20240315-1ubuntu1) ... 1366s Selecting previously unselected package libgcc-13-dev:armhf. 1366s Preparing to unpack .../016-libgcc-13-dev_13.2.0-21ubuntu1_armhf.deb ... 1366s Unpacking libgcc-13-dev:armhf (13.2.0-21ubuntu1) ... 1366s Selecting previously unselected package gcc-13-arm-linux-gnueabihf. 1366s Preparing to unpack .../017-gcc-13-arm-linux-gnueabihf_13.2.0-21ubuntu1_armhf.deb ... 1366s Unpacking gcc-13-arm-linux-gnueabihf (13.2.0-21ubuntu1) ... 1367s Selecting previously unselected package gcc-13. 1367s Preparing to unpack .../018-gcc-13_13.2.0-21ubuntu1_armhf.deb ... 1367s Unpacking gcc-13 (13.2.0-21ubuntu1) ... 1367s Selecting previously unselected package gcc-arm-linux-gnueabihf. 1367s Preparing to unpack .../019-gcc-arm-linux-gnueabihf_4%3a13.2.0-7ubuntu1_armhf.deb ... 1367s Unpacking gcc-arm-linux-gnueabihf (4:13.2.0-7ubuntu1) ... 1367s Selecting previously unselected package gcc. 1367s Preparing to unpack .../020-gcc_4%3a13.2.0-7ubuntu1_armhf.deb ... 1367s Unpacking gcc (4:13.2.0-7ubuntu1) ... 1367s Selecting previously unselected package libstdc++-13-dev:armhf. 1367s Preparing to unpack .../021-libstdc++-13-dev_13.2.0-21ubuntu1_armhf.deb ... 1367s Unpacking libstdc++-13-dev:armhf (13.2.0-21ubuntu1) ... 1367s Selecting previously unselected package g++-13-arm-linux-gnueabihf. 1367s Preparing to unpack .../022-g++-13-arm-linux-gnueabihf_13.2.0-21ubuntu1_armhf.deb ... 1367s Unpacking g++-13-arm-linux-gnueabihf (13.2.0-21ubuntu1) ... 1368s Selecting previously unselected package g++-13. 1368s Preparing to unpack .../023-g++-13_13.2.0-21ubuntu1_armhf.deb ... 1368s Unpacking g++-13 (13.2.0-21ubuntu1) ... 1368s Selecting previously unselected package g++-arm-linux-gnueabihf. 1368s Preparing to unpack .../024-g++-arm-linux-gnueabihf_4%3a13.2.0-7ubuntu1_armhf.deb ... 1368s Unpacking g++-arm-linux-gnueabihf (4:13.2.0-7ubuntu1) ... 1368s Selecting previously unselected package g++. 1368s Preparing to unpack .../025-g++_4%3a13.2.0-7ubuntu1_armhf.deb ... 1368s Unpacking g++ (4:13.2.0-7ubuntu1) ... 1368s Selecting previously unselected package build-essential. 1368s Preparing to unpack .../026-build-essential_12.10ubuntu1_armhf.deb ... 1368s Unpacking build-essential (12.10ubuntu1) ... 1368s Selecting previously unselected package dctrl-tools. 1368s Preparing to unpack .../027-dctrl-tools_2.24-3build2_armhf.deb ... 1368s Unpacking dctrl-tools (2.24-3build2) ... 1368s Selecting previously unselected package libfreetype6:armhf. 1368s Preparing to unpack .../028-libfreetype6_2.13.2+dfsg-1build2_armhf.deb ... 1368s Unpacking libfreetype6:armhf (2.13.2+dfsg-1build2) ... 1368s Selecting previously unselected package fonts-dejavu-mono. 1368s Preparing to unpack .../029-fonts-dejavu-mono_2.37-8_all.deb ... 1368s Unpacking fonts-dejavu-mono (2.37-8) ... 1368s Selecting previously unselected package fonts-dejavu-core. 1368s Preparing to unpack .../030-fonts-dejavu-core_2.37-8_all.deb ... 1368s Unpacking fonts-dejavu-core (2.37-8) ... 1368s Selecting previously unselected package fontconfig-config. 1368s Preparing to unpack .../031-fontconfig-config_2.15.0-1.1ubuntu1_armhf.deb ... 1369s Unpacking fontconfig-config (2.15.0-1.1ubuntu1) ... 1369s Selecting previously unselected package libfontconfig1:armhf. 1369s Preparing to unpack .../032-libfontconfig1_2.15.0-1.1ubuntu1_armhf.deb ... 1369s Unpacking libfontconfig1:armhf (2.15.0-1.1ubuntu1) ... 1369s Selecting previously unselected package fontconfig. 1369s Preparing to unpack .../033-fontconfig_2.15.0-1.1ubuntu1_armhf.deb ... 1369s Unpacking fontconfig (2.15.0-1.1ubuntu1) ... 1369s Selecting previously unselected package fonts-glyphicons-halflings. 1369s Preparing to unpack .../034-fonts-glyphicons-halflings_1.009~3.4.1+dfsg-3_all.deb ... 1369s Unpacking fonts-glyphicons-halflings (1.009~3.4.1+dfsg-3) ... 1369s Selecting previously unselected package fonts-mathjax. 1369s Preparing to unpack .../035-fonts-mathjax_2.7.9+dfsg-1_all.deb ... 1369s Unpacking fonts-mathjax (2.7.9+dfsg-1) ... 1369s Selecting previously unselected package libgfortran5:armhf. 1369s Preparing to unpack .../036-libgfortran5_14-20240315-1ubuntu1_armhf.deb ... 1369s Unpacking libgfortran5:armhf (14-20240315-1ubuntu1) ... 1369s Selecting previously unselected package libgfortran-13-dev:armhf. 1369s Preparing to unpack .../037-libgfortran-13-dev_13.2.0-21ubuntu1_armhf.deb ... 1369s Unpacking libgfortran-13-dev:armhf (13.2.0-21ubuntu1) ... 1369s Selecting previously unselected package gfortran-13-arm-linux-gnueabihf. 1369s Preparing to unpack .../038-gfortran-13-arm-linux-gnueabihf_13.2.0-21ubuntu1_armhf.deb ... 1369s Unpacking gfortran-13-arm-linux-gnueabihf (13.2.0-21ubuntu1) ... 1370s Selecting previously unselected package gfortran-13. 1370s Preparing to unpack .../039-gfortran-13_13.2.0-21ubuntu1_armhf.deb ... 1370s Unpacking gfortran-13 (13.2.0-21ubuntu1) ... 1370s Selecting previously unselected package gfortran-arm-linux-gnueabihf. 1370s Preparing to unpack .../040-gfortran-arm-linux-gnueabihf_4%3a13.2.0-7ubuntu1_armhf.deb ... 1370s Unpacking gfortran-arm-linux-gnueabihf (4:13.2.0-7ubuntu1) ... 1370s Selecting previously unselected package gfortran. 1370s Preparing to unpack .../041-gfortran_4%3a13.2.0-7ubuntu1_armhf.deb ... 1370s Unpacking gfortran (4:13.2.0-7ubuntu1) ... 1370s Selecting previously unselected package icu-devtools. 1370s Preparing to unpack .../042-icu-devtools_74.2-1ubuntu1_armhf.deb ... 1370s Unpacking icu-devtools (74.2-1ubuntu1) ... 1370s Selecting previously unselected package libblas3:armhf. 1370s Preparing to unpack .../043-libblas3_3.12.0-3_armhf.deb ... 1370s Unpacking libblas3:armhf (3.12.0-3) ... 1370s Selecting previously unselected package libblas-dev:armhf. 1370s Preparing to unpack .../044-libblas-dev_3.12.0-3_armhf.deb ... 1370s Unpacking libblas-dev:armhf (3.12.0-3) ... 1370s Selecting previously unselected package libbz2-dev:armhf. 1370s Preparing to unpack .../045-libbz2-dev_1.0.8-5ubuntu1_armhf.deb ... 1370s Unpacking libbz2-dev:armhf (1.0.8-5ubuntu1) ... 1370s Selecting previously unselected package libpixman-1-0:armhf. 1370s Preparing to unpack .../046-libpixman-1-0_0.42.2-1_armhf.deb ... 1370s Unpacking libpixman-1-0:armhf (0.42.2-1) ... 1370s Selecting previously unselected package libxcb-render0:armhf. 1370s Preparing to unpack .../047-libxcb-render0_1.15-1_armhf.deb ... 1370s Unpacking libxcb-render0:armhf (1.15-1) ... 1370s Selecting previously unselected package libxcb-shm0:armhf. 1370s Preparing to unpack .../048-libxcb-shm0_1.15-1_armhf.deb ... 1370s Unpacking libxcb-shm0:armhf (1.15-1) ... 1370s Selecting previously unselected package libxrender1:armhf. 1370s Preparing to unpack .../049-libxrender1_1%3a0.9.10-1.1_armhf.deb ... 1370s Unpacking libxrender1:armhf (1:0.9.10-1.1) ... 1370s Selecting previously unselected package libcairo2:armhf. 1370s Preparing to unpack .../050-libcairo2_1.18.0-1ubuntu1_armhf.deb ... 1370s Unpacking libcairo2:armhf (1.18.0-1ubuntu1) ... 1370s Selecting previously unselected package libdatrie1:armhf. 1370s Preparing to unpack .../051-libdatrie1_0.2.13-3_armhf.deb ... 1370s Unpacking libdatrie1:armhf (0.2.13-3) ... 1370s Selecting previously unselected package libdeflate0:armhf. 1370s Preparing to unpack .../052-libdeflate0_1.19-1_armhf.deb ... 1370s Unpacking libdeflate0:armhf (1.19-1) ... 1370s Selecting previously unselected package libgraphite2-3:armhf. 1370s Preparing to unpack .../053-libgraphite2-3_1.3.14-2_armhf.deb ... 1370s Unpacking libgraphite2-3:armhf (1.3.14-2) ... 1370s Selecting previously unselected package libharfbuzz0b:armhf. 1371s Preparing to unpack .../054-libharfbuzz0b_8.3.0-2build1_armhf.deb ... 1371s Unpacking libharfbuzz0b:armhf (8.3.0-2build1) ... 1371s Selecting previously unselected package x11-common. 1371s Preparing to unpack .../055-x11-common_1%3a7.7+23ubuntu2_all.deb ... 1371s Unpacking x11-common (1:7.7+23ubuntu2) ... 1371s Selecting previously unselected package libice6:armhf. 1371s Preparing to unpack .../056-libice6_2%3a1.0.10-1build2_armhf.deb ... 1371s Unpacking libice6:armhf (2:1.0.10-1build2) ... 1371s Selecting previously unselected package libicu-dev:armhf. 1371s Preparing to unpack .../057-libicu-dev_74.2-1ubuntu1_armhf.deb ... 1371s Unpacking libicu-dev:armhf (74.2-1ubuntu1) ... 1373s Selecting previously unselected package libjpeg-turbo8:armhf. 1373s Preparing to unpack .../058-libjpeg-turbo8_2.1.5-2ubuntu1_armhf.deb ... 1373s Unpacking libjpeg-turbo8:armhf (2.1.5-2ubuntu1) ... 1373s Selecting previously unselected package libjpeg-turbo8-dev:armhf. 1373s Preparing to unpack .../059-libjpeg-turbo8-dev_2.1.5-2ubuntu1_armhf.deb ... 1373s Unpacking libjpeg-turbo8-dev:armhf (2.1.5-2ubuntu1) ... 1373s Selecting previously unselected package libjpeg8:armhf. 1373s Preparing to unpack .../060-libjpeg8_8c-2ubuntu11_armhf.deb ... 1373s Unpacking libjpeg8:armhf (8c-2ubuntu11) ... 1373s Selecting previously unselected package libjpeg8-dev:armhf. 1373s Preparing to unpack .../061-libjpeg8-dev_8c-2ubuntu11_armhf.deb ... 1373s Unpacking libjpeg8-dev:armhf (8c-2ubuntu11) ... 1373s Selecting previously unselected package libjpeg-dev:armhf. 1373s Preparing to unpack .../062-libjpeg-dev_8c-2ubuntu11_armhf.deb ... 1373s Unpacking libjpeg-dev:armhf (8c-2ubuntu11) ... 1373s Selecting previously unselected package libjs-bootstrap. 1373s Preparing to unpack .../063-libjs-bootstrap_3.4.1+dfsg-3_all.deb ... 1373s Unpacking libjs-bootstrap (3.4.1+dfsg-3) ... 1373s Selecting previously unselected package libjs-highlight.js. 1373s Preparing to unpack .../064-libjs-highlight.js_9.18.5+dfsg1-2_all.deb ... 1373s Unpacking libjs-highlight.js (9.18.5+dfsg1-2) ... 1373s Selecting previously unselected package libjs-jquery. 1373s Preparing to unpack .../065-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... 1373s Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 1373s Selecting previously unselected package libjs-jquery-datatables. 1373s Preparing to unpack .../066-libjs-jquery-datatables_1.11.5+dfsg-2_all.deb ... 1373s Unpacking libjs-jquery-datatables (1.11.5+dfsg-2) ... 1373s Selecting previously unselected package liblapack3:armhf. 1373s Preparing to unpack .../067-liblapack3_3.12.0-3_armhf.deb ... 1373s Unpacking liblapack3:armhf (3.12.0-3) ... 1373s Selecting previously unselected package liblapack-dev:armhf. 1373s Preparing to unpack .../068-liblapack-dev_3.12.0-3_armhf.deb ... 1373s Unpacking liblapack-dev:armhf (3.12.0-3) ... 1373s Selecting previously unselected package liblerc4:armhf. 1373s Preparing to unpack .../069-liblerc4_4.0.0+ds-4ubuntu1_armhf.deb ... 1373s Unpacking liblerc4:armhf (4.0.0+ds-4ubuntu1) ... 1373s Selecting previously unselected package libncurses-dev:armhf. 1373s Preparing to unpack .../070-libncurses-dev_6.4+20240113-1ubuntu1_armhf.deb ... 1373s Unpacking libncurses-dev:armhf (6.4+20240113-1ubuntu1) ... 1373s Selecting previously unselected package libthai-data. 1373s Preparing to unpack .../071-libthai-data_0.1.29-2_all.deb ... 1373s Unpacking libthai-data (0.1.29-2) ... 1373s Selecting previously unselected package libthai0:armhf. 1373s Preparing to unpack .../072-libthai0_0.1.29-2_armhf.deb ... 1373s Unpacking libthai0:armhf (0.1.29-2) ... 1373s Selecting previously unselected package libpango-1.0-0:armhf. 1373s Preparing to unpack .../073-libpango-1.0-0_1.52.1+ds-1_armhf.deb ... 1373s Unpacking libpango-1.0-0:armhf (1.52.1+ds-1) ... 1373s Selecting previously unselected package libpangoft2-1.0-0:armhf. 1373s Preparing to unpack .../074-libpangoft2-1.0-0_1.52.1+ds-1_armhf.deb ... 1373s Unpacking libpangoft2-1.0-0:armhf (1.52.1+ds-1) ... 1373s Selecting previously unselected package libpangocairo-1.0-0:armhf. 1373s Preparing to unpack .../075-libpangocairo-1.0-0_1.52.1+ds-1_armhf.deb ... 1373s Unpacking libpangocairo-1.0-0:armhf (1.52.1+ds-1) ... 1373s Selecting previously unselected package libpaper1:armhf. 1373s Preparing to unpack .../076-libpaper1_1.1.29_armhf.deb ... 1373s Unpacking libpaper1:armhf (1.1.29) ... 1373s Selecting previously unselected package libpaper-utils. 1373s Preparing to unpack .../077-libpaper-utils_1.1.29_armhf.deb ... 1373s Unpacking libpaper-utils (1.1.29) ... 1373s Selecting previously unselected package libpcre2-16-0:armhf. 1373s Preparing to unpack .../078-libpcre2-16-0_10.42-4ubuntu1_armhf.deb ... 1373s Unpacking libpcre2-16-0:armhf (10.42-4ubuntu1) ... 1373s Selecting previously unselected package libpcre2-32-0:armhf. 1373s Preparing to unpack .../079-libpcre2-32-0_10.42-4ubuntu1_armhf.deb ... 1373s Unpacking libpcre2-32-0:armhf (10.42-4ubuntu1) ... 1373s Selecting previously unselected package libpcre2-posix3:armhf. 1373s Preparing to unpack .../080-libpcre2-posix3_10.42-4ubuntu1_armhf.deb ... 1373s Unpacking libpcre2-posix3:armhf (10.42-4ubuntu1) ... 1373s Selecting previously unselected package libpcre2-dev:armhf. 1373s Preparing to unpack .../081-libpcre2-dev_10.42-4ubuntu1_armhf.deb ... 1373s Unpacking libpcre2-dev:armhf (10.42-4ubuntu1) ... 1373s Selecting previously unselected package libpkgconf3:armhf. 1373s Preparing to unpack .../082-libpkgconf3_1.8.1-2_armhf.deb ... 1373s Unpacking libpkgconf3:armhf (1.8.1-2) ... 1373s Selecting previously unselected package zlib1g-dev:armhf. 1373s Preparing to unpack .../083-zlib1g-dev_1%3a1.3.dfsg-3.1ubuntu1_armhf.deb ... 1373s Unpacking zlib1g-dev:armhf (1:1.3.dfsg-3.1ubuntu1) ... 1373s Selecting previously unselected package libpng-dev:armhf. 1373s Preparing to unpack .../084-libpng-dev_1.6.43-3_armhf.deb ... 1373s Unpacking libpng-dev:armhf (1.6.43-3) ... 1373s Selecting previously unselected package libreadline-dev:armhf. 1373s Preparing to unpack .../085-libreadline-dev_8.2-4_armhf.deb ... 1373s Unpacking libreadline-dev:armhf (8.2-4) ... 1373s Selecting previously unselected package libsharpyuv0:armhf. 1373s Preparing to unpack .../086-libsharpyuv0_1.3.2-0.4build2_armhf.deb ... 1373s Unpacking libsharpyuv0:armhf (1.3.2-0.4build2) ... 1373s Selecting previously unselected package libsm6:armhf. 1373s Preparing to unpack .../087-libsm6_2%3a1.2.3-1build2_armhf.deb ... 1373s Unpacking libsm6:armhf (2:1.2.3-1build2) ... 1373s Selecting previously unselected package libtcl8.6:armhf. 1374s Preparing to unpack .../088-libtcl8.6_8.6.14+dfsg-1_armhf.deb ... 1374s Unpacking libtcl8.6:armhf (8.6.14+dfsg-1) ... 1374s Selecting previously unselected package libjbig0:armhf. 1374s Preparing to unpack .../089-libjbig0_2.1-6.1ubuntu1_armhf.deb ... 1374s Unpacking libjbig0:armhf (2.1-6.1ubuntu1) ... 1374s Selecting previously unselected package libwebp7:armhf. 1374s Preparing to unpack .../090-libwebp7_1.3.2-0.4build2_armhf.deb ... 1374s Unpacking libwebp7:armhf (1.3.2-0.4build2) ... 1374s Selecting previously unselected package libtiff6:armhf. 1374s Preparing to unpack .../091-libtiff6_4.5.1+git230720-4ubuntu1_armhf.deb ... 1374s Unpacking libtiff6:armhf (4.5.1+git230720-4ubuntu1) ... 1374s Selecting previously unselected package libxft2:armhf. 1374s Preparing to unpack .../092-libxft2_2.3.6-1_armhf.deb ... 1374s Unpacking libxft2:armhf (2.3.6-1) ... 1374s Selecting previously unselected package libxss1:armhf. 1374s Preparing to unpack .../093-libxss1_1%3a1.2.3-1build2_armhf.deb ... 1374s Unpacking libxss1:armhf (1:1.2.3-1build2) ... 1374s Selecting previously unselected package libtk8.6:armhf. 1374s Preparing to unpack .../094-libtk8.6_8.6.14-1_armhf.deb ... 1374s Unpacking libtk8.6:armhf (8.6.14-1) ... 1374s Selecting previously unselected package libxt6t64:armhf. 1374s Preparing to unpack .../095-libxt6t64_1%3a1.2.1-1.2_armhf.deb ... 1374s Unpacking libxt6t64:armhf (1:1.2.1-1.2) ... 1374s Selecting previously unselected package node-normalize.css. 1374s Preparing to unpack .../096-node-normalize.css_8.0.1-5_all.deb ... 1374s Unpacking node-normalize.css (8.0.1-5) ... 1374s Selecting previously unselected package pkgconf-bin. 1374s Preparing to unpack .../097-pkgconf-bin_1.8.1-2_armhf.deb ... 1374s Unpacking pkgconf-bin (1.8.1-2) ... 1374s Selecting previously unselected package pkgconf:armhf. 1374s Preparing to unpack .../098-pkgconf_1.8.1-2_armhf.deb ... 1374s Unpacking pkgconf:armhf (1.8.1-2) ... 1374s Selecting previously unselected package pkg-config:armhf. 1374s Preparing to unpack .../099-pkg-config_1.8.1-2_armhf.deb ... 1374s Unpacking pkg-config:armhf (1.8.1-2) ... 1374s Selecting previously unselected package zip. 1374s Preparing to unpack .../100-zip_3.0-13_armhf.deb ... 1374s Unpacking zip (3.0-13) ... 1375s Selecting previously unselected package unzip. 1375s Preparing to unpack .../101-unzip_6.0-28ubuntu3_armhf.deb ... 1375s Unpacking unzip (6.0-28ubuntu3) ... 1375s Selecting previously unselected package xdg-utils. 1375s Preparing to unpack .../102-xdg-utils_1.1.3-4.1ubuntu3_all.deb ... 1375s Unpacking xdg-utils (1.1.3-4.1ubuntu3) ... 1375s Selecting previously unselected package r-base-core. 1375s Preparing to unpack .../103-r-base-core_4.3.3-2build1_armhf.deb ... 1375s Unpacking r-base-core (4.3.3-2build1) ... 1375s Selecting previously unselected package liblzma-dev:armhf. 1375s Preparing to unpack .../104-liblzma-dev_5.6.0-0.2_armhf.deb ... 1375s Unpacking liblzma-dev:armhf (5.6.0-0.2) ... 1375s Selecting previously unselected package r-base-dev. 1376s Preparing to unpack .../105-r-base-dev_4.3.3-2build1_all.deb ... 1376s Unpacking r-base-dev (4.3.3-2build1) ... 1376s Selecting previously unselected package pkg-r-autopkgtest. 1376s Preparing to unpack .../106-pkg-r-autopkgtest_20231212ubuntu1_all.deb ... 1376s Unpacking pkg-r-autopkgtest (20231212ubuntu1) ... 1376s Selecting previously unselected package r-cran-base64enc. 1376s Preparing to unpack .../107-r-cran-base64enc_0.1-3-3_armhf.deb ... 1376s Unpacking r-cran-base64enc (0.1-3-3) ... 1376s Selecting previously unselected package r-cran-cli. 1376s Preparing to unpack .../108-r-cran-cli_3.6.2-1_armhf.deb ... 1376s Unpacking r-cran-cli (3.6.2-1) ... 1376s Selecting previously unselected package r-cran-colorspace. 1376s Preparing to unpack .../109-r-cran-colorspace_2.1-0+dfsg-1_armhf.deb ... 1376s Unpacking r-cran-colorspace (2.1-0+dfsg-1) ... 1376s Selecting previously unselected package r-cran-commonmark. 1376s Preparing to unpack .../110-r-cran-commonmark_1.9.1-1_armhf.deb ... 1376s Unpacking r-cran-commonmark (1.9.1-1) ... 1376s Selecting previously unselected package r-cran-evaluate. 1376s Preparing to unpack .../111-r-cran-evaluate_0.23-1_all.deb ... 1376s Unpacking r-cran-evaluate (0.23-1) ... 1376s Selecting previously unselected package r-cran-fansi. 1376s Preparing to unpack .../112-r-cran-fansi_1.0.5-1_armhf.deb ... 1376s Unpacking r-cran-fansi (1.0.5-1) ... 1376s Selecting previously unselected package r-cran-farver. 1376s Preparing to unpack .../113-r-cran-farver_2.1.1-1_armhf.deb ... 1376s Unpacking r-cran-farver (2.1.1-1) ... 1376s Selecting previously unselected package r-cran-glue. 1376s Preparing to unpack .../114-r-cran-glue_1.7.0-1_armhf.deb ... 1376s Unpacking r-cran-glue (1.7.0-1) ... 1376s Selecting previously unselected package r-cran-rlang. 1376s Preparing to unpack .../115-r-cran-rlang_1.1.3-1_armhf.deb ... 1376s Unpacking r-cran-rlang (1.1.3-1) ... 1377s Selecting previously unselected package r-cran-lifecycle. 1377s Preparing to unpack .../116-r-cran-lifecycle_1.0.4+dfsg-1_all.deb ... 1377s Unpacking r-cran-lifecycle (1.0.4+dfsg-1) ... 1377s Selecting previously unselected package r-cran-gtable. 1377s Preparing to unpack .../117-r-cran-gtable_0.3.4+dfsg-1_all.deb ... 1377s Unpacking r-cran-gtable (0.3.4+dfsg-1) ... 1377s Selecting previously unselected package r-cran-isoband. 1377s Preparing to unpack .../118-r-cran-isoband_0.2.7-1_armhf.deb ... 1377s Unpacking r-cran-isoband (0.2.7-1) ... 1377s Selecting previously unselected package r-cran-mass. 1377s Preparing to unpack .../119-r-cran-mass_7.3-60.0.1-1_armhf.deb ... 1377s Unpacking r-cran-mass (7.3-60.0.1-1) ... 1377s Selecting previously unselected package r-cran-lattice. 1377s Preparing to unpack .../120-r-cran-lattice_0.22-5-1_armhf.deb ... 1377s Unpacking r-cran-lattice (0.22-5-1) ... 1377s Selecting previously unselected package r-cran-nlme. 1377s Preparing to unpack .../121-r-cran-nlme_3.1.164-1_armhf.deb ... 1377s Unpacking r-cran-nlme (3.1.164-1) ... 1377s Selecting previously unselected package r-cran-matrix. 1377s Preparing to unpack .../122-r-cran-matrix_1.6-5-1_armhf.deb ... 1377s Unpacking r-cran-matrix (1.6-5-1) ... 1377s Selecting previously unselected package r-cran-mgcv. 1377s Preparing to unpack .../123-r-cran-mgcv_1.9-1-1_armhf.deb ... 1377s Unpacking r-cran-mgcv (1.9-1-1) ... 1377s Selecting previously unselected package r-cran-labeling. 1377s Preparing to unpack .../124-r-cran-labeling_0.4.3-1_all.deb ... 1377s Unpacking r-cran-labeling (0.4.3-1) ... 1377s Selecting previously unselected package r-cran-munsell. 1377s Preparing to unpack .../125-r-cran-munsell_0.5.0-2build1_all.deb ... 1377s Unpacking r-cran-munsell (0.5.0-2build1) ... 1377s Selecting previously unselected package r-cran-r6. 1377s Preparing to unpack .../126-r-cran-r6_2.5.1-1_all.deb ... 1377s Unpacking r-cran-r6 (2.5.1-1) ... 1378s Selecting previously unselected package r-cran-rcolorbrewer. 1378s Preparing to unpack .../127-r-cran-rcolorbrewer_1.1-3-1build1_all.deb ... 1378s Unpacking r-cran-rcolorbrewer (1.1-3-1build1) ... 1378s Selecting previously unselected package r-cran-viridislite. 1378s Preparing to unpack .../128-r-cran-viridislite_0.4.2-2_all.deb ... 1378s Unpacking r-cran-viridislite (0.4.2-2) ... 1378s Selecting previously unselected package r-cran-scales. 1378s Preparing to unpack .../129-r-cran-scales_1.3.0-1_all.deb ... 1378s Unpacking r-cran-scales (1.3.0-1) ... 1378s Selecting previously unselected package r-cran-magrittr. 1378s Preparing to unpack .../130-r-cran-magrittr_2.0.3-1_armhf.deb ... 1378s Unpacking r-cran-magrittr (2.0.3-1) ... 1378s Selecting previously unselected package r-cran-utf8. 1378s Preparing to unpack .../131-r-cran-utf8_1.2.4-1_armhf.deb ... 1378s Unpacking r-cran-utf8 (1.2.4-1) ... 1378s Selecting previously unselected package r-cran-vctrs. 1378s Preparing to unpack .../132-r-cran-vctrs_0.6.5-1_armhf.deb ... 1378s Unpacking r-cran-vctrs (0.6.5-1) ... 1378s Selecting previously unselected package r-cran-pillar. 1378s Preparing to unpack .../133-r-cran-pillar_1.9.0+dfsg-1_all.deb ... 1378s Unpacking r-cran-pillar (1.9.0+dfsg-1) ... 1378s Selecting previously unselected package r-cran-pkgconfig. 1378s Preparing to unpack .../134-r-cran-pkgconfig_2.0.3-2build1_all.deb ... 1378s Unpacking r-cran-pkgconfig (2.0.3-2build1) ... 1378s Selecting previously unselected package r-cran-tibble. 1378s Preparing to unpack .../135-r-cran-tibble_3.2.1+dfsg-2_armhf.deb ... 1378s Unpacking r-cran-tibble (3.2.1+dfsg-2) ... 1378s Selecting previously unselected package r-cran-withr. 1378s Preparing to unpack .../136-r-cran-withr_3.0.0+dfsg-1_all.deb ... 1378s Unpacking r-cran-withr (3.0.0+dfsg-1) ... 1378s Selecting previously unselected package r-cran-ggplot2. 1379s Preparing to unpack .../137-r-cran-ggplot2_3.4.4+dfsg-1_all.deb ... 1379s Unpacking r-cran-ggplot2 (3.4.4+dfsg-1) ... 1379s Selecting previously unselected package r-cran-xfun. 1379s Preparing to unpack .../138-r-cran-xfun_0.41+dfsg-1_armhf.deb ... 1379s Unpacking r-cran-xfun (0.41+dfsg-1) ... 1379s Selecting previously unselected package r-cran-highr. 1379s Preparing to unpack .../139-r-cran-highr_0.10+dfsg-1_all.deb ... 1379s Unpacking r-cran-highr (0.10+dfsg-1) ... 1379s Selecting previously unselected package r-cran-yaml. 1379s Preparing to unpack .../140-r-cran-yaml_2.3.8-1_armhf.deb ... 1379s Unpacking r-cran-yaml (2.3.8-1) ... 1379s Selecting previously unselected package libjs-mathjax. 1379s Preparing to unpack .../141-libjs-mathjax_2.7.9+dfsg-1_all.deb ... 1379s Unpacking libjs-mathjax (2.7.9+dfsg-1) ... 1381s Selecting previously unselected package r-cran-knitr. 1381s Preparing to unpack .../142-r-cran-knitr_1.45+dfsg-1_all.deb ... 1381s Unpacking r-cran-knitr (1.45+dfsg-1) ... 1381s Selecting previously unselected package r-cran-markdown. 1381s Preparing to unpack .../143-r-cran-markdown_1.12+dfsg-1_all.deb ... 1381s Unpacking r-cran-markdown (1.12+dfsg-1) ... 1381s Selecting previously unselected package r-cran-matrixstats. 1381s Preparing to unpack .../144-r-cran-matrixstats_1.2.0-1_armhf.deb ... 1381s Unpacking r-cran-matrixstats (1.2.0-1) ... 1381s Selecting previously unselected package autopkgtest-satdep. 1381s Preparing to unpack .../145-2-autopkgtest-satdep.deb ... 1381s Unpacking autopkgtest-satdep (0) ... 1381s Setting up libgraphite2-3:armhf (1.3.14-2) ... 1381s Setting up libpixman-1-0:armhf (0.42.2-1) ... 1381s Setting up libsharpyuv0:armhf (1.3.2-0.4build2) ... 1381s Setting up libpaper1:armhf (1.1.29) ... 1381s 1381s Creating config file /etc/papersize with new version 1381s Setting up fonts-mathjax (2.7.9+dfsg-1) ... 1381s Setting up liblerc4:armhf (4.0.0+ds-4ubuntu1) ... 1381s Setting up libjs-mathjax (2.7.9+dfsg-1) ... 1381s Setting up libxrender1:armhf (1:0.9.10-1.1) ... 1381s Setting up libdatrie1:armhf (0.2.13-3) ... 1381s Setting up libxcb-render0:armhf (1.15-1) ... 1381s Setting up fonts-glyphicons-halflings (1.009~3.4.1+dfsg-3) ... 1381s Setting up unzip (6.0-28ubuntu3) ... 1381s Setting up x11-common (1:7.7+23ubuntu2) ... 1382s Setting up libdeflate0:armhf (1.19-1) ... 1382s Setting up linux-libc-dev:armhf (6.8.0-20.20) ... 1382s Setting up libxcb-shm0:armhf (1.15-1) ... 1382s Setting up libpaper-utils (1.1.29) ... 1382s Setting up libgomp1:armhf (14-20240315-1ubuntu1) ... 1382s Setting up libjbig0:armhf (2.1-6.1ubuntu1) ... 1382s Setting up libpcre2-16-0:armhf (10.42-4ubuntu1) ... 1382s Setting up zip (3.0-13) ... 1382s Setting up libpcre2-32-0:armhf (10.42-4ubuntu1) ... 1382s Setting up libblas3:armhf (3.12.0-3) ... 1382s update-alternatives: using /usr/lib/arm-linux-gnueabihf/blas/libblas.so.3 to provide /usr/lib/arm-linux-gnueabihf/libblas.so.3 (libblas.so.3-arm-linux-gnueabihf) in auto mode 1382s Setting up libpkgconf3:armhf (1.8.1-2) ... 1382s Setting up rpcsvc-proto (1.4.2-0ubuntu6) ... 1382s Setting up libfreetype6:armhf (2.13.2+dfsg-1build2) ... 1382s Setting up fonts-dejavu-mono (2.37-8) ... 1382s Setting up libmpc3:armhf (1.3.1-1) ... 1382s Setting up libatomic1:armhf (14-20240315-1ubuntu1) ... 1382s Setting up libtcl8.6:armhf (8.6.14+dfsg-1) ... 1382s Setting up icu-devtools (74.2-1ubuntu1) ... 1382s Setting up fonts-dejavu-core (2.37-8) ... 1382s Setting up pkgconf-bin (1.8.1-2) ... 1382s Setting up libjpeg-turbo8:armhf (2.1.5-2ubuntu1) ... 1382s Setting up libgfortran5:armhf (14-20240315-1ubuntu1) ... 1382s Setting up libwebp7:armhf (1.3.2-0.4build2) ... 1382s Setting up liblzma-dev:armhf (5.6.0-0.2) ... 1382s Setting up libubsan1:armhf (14-20240315-1ubuntu1) ... 1382s Setting up libpcre2-posix3:armhf (10.42-4ubuntu1) ... 1382s Setting up libjs-highlight.js (9.18.5+dfsg1-2) ... 1382s Setting up libcrypt-dev:armhf (1:4.4.36-4) ... 1382s Setting up libasan8:armhf (14-20240315-1ubuntu1) ... 1382s Setting up libharfbuzz0b:armhf (8.3.0-2build1) ... 1382s Setting up libthai-data (0.1.29-2) ... 1382s Setting up libxss1:armhf (1:1.2.3-1build2) ... 1382s Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 1382s Setting up libisl23:armhf (0.26-3) ... 1382s Setting up libc-dev-bin (2.39-0ubuntu6) ... 1382s Setting up node-normalize.css (8.0.1-5) ... 1382s Setting up xdg-utils (1.1.3-4.1ubuntu3) ... 1382s update-alternatives: using /usr/bin/xdg-open to provide /usr/bin/open (open) in auto mode 1382s Setting up libcc1-0:armhf (14-20240315-1ubuntu1) ... 1382s Setting up libblas-dev:armhf (3.12.0-3) ... 1382s update-alternatives: using /usr/lib/arm-linux-gnueabihf/blas/libblas.so to provide /usr/lib/arm-linux-gnueabihf/libblas.so (libblas.so-arm-linux-gnueabihf) in auto mode 1382s Setting up dctrl-tools (2.24-3build2) ... 1382s Setting up libjs-bootstrap (3.4.1+dfsg-3) ... 1382s Setting up libjpeg8:armhf (8c-2ubuntu11) ... 1382s Setting up libice6:armhf (2:1.0.10-1build2) ... 1382s Setting up liblapack3:armhf (3.12.0-3) ... 1382s update-alternatives: using /usr/lib/arm-linux-gnueabihf/lapack/liblapack.so.3 to provide /usr/lib/arm-linux-gnueabihf/liblapack.so.3 (liblapack.so.3-arm-linux-gnueabihf) in auto mode 1382s Setting up cpp-13-arm-linux-gnueabihf (13.2.0-21ubuntu1) ... 1382s Setting up fontconfig-config (2.15.0-1.1ubuntu1) ... 1383s Setting up libjs-jquery-datatables (1.11.5+dfsg-2) ... 1383s Setting up pkgconf:armhf (1.8.1-2) ... 1383s Setting up libthai0:armhf (0.1.29-2) ... 1383s Setting up liblapack-dev:armhf (3.12.0-3) ... 1383s update-alternatives: using /usr/lib/arm-linux-gnueabihf/lapack/liblapack.so to provide /usr/lib/arm-linux-gnueabihf/liblapack.so (liblapack.so-arm-linux-gnueabihf) in auto mode 1383s Setting up pkg-config:armhf (1.8.1-2) ... 1383s Setting up libgcc-13-dev:armhf (13.2.0-21ubuntu1) ... 1383s Setting up libtiff6:armhf (4.5.1+git230720-4ubuntu1) ... 1383s Setting up libc6-dev:armhf (2.39-0ubuntu6) ... 1383s Setting up libfontconfig1:armhf (2.15.0-1.1ubuntu1) ... 1383s Setting up libgfortran-13-dev:armhf (13.2.0-21ubuntu1) ... 1383s Setting up libsm6:armhf (2:1.2.3-1build2) ... 1383s Setting up libicu-dev:armhf (74.2-1ubuntu1) ... 1383s Setting up cpp-arm-linux-gnueabihf (4:13.2.0-7ubuntu1) ... 1383s Setting up libstdc++-13-dev:armhf (13.2.0-21ubuntu1) ... 1383s Setting up libbz2-dev:armhf (1.0.8-5ubuntu1) ... 1383s Setting up fontconfig (2.15.0-1.1ubuntu1) ... 1385s Regenerating fonts cache... done. 1385s Setting up libjpeg-turbo8-dev:armhf (2.1.5-2ubuntu1) ... 1385s Setting up libxft2:armhf (2.3.6-1) ... 1385s Setting up libncurses-dev:armhf (6.4+20240113-1ubuntu1) ... 1385s Setting up libpcre2-dev:armhf (10.42-4ubuntu1) ... 1385s Setting up cpp-13 (13.2.0-21ubuntu1) ... 1385s Setting up libtk8.6:armhf (8.6.14-1) ... 1385s Setting up libpango-1.0-0:armhf (1.52.1+ds-1) ... 1385s Setting up libreadline-dev:armhf (8.2-4) ... 1385s Setting up libcairo2:armhf (1.18.0-1ubuntu1) ... 1385s Setting up gcc-13-arm-linux-gnueabihf (13.2.0-21ubuntu1) ... 1385s Setting up libxt6t64:armhf (1:1.2.1-1.2) ... 1385s Setting up gcc-13 (13.2.0-21ubuntu1) ... 1385s Setting up zlib1g-dev:armhf (1:1.3.dfsg-3.1ubuntu1) ... 1385s Setting up cpp (4:13.2.0-7ubuntu1) ... 1385s Setting up libpangoft2-1.0-0:armhf (1.52.1+ds-1) ... 1385s Setting up libjpeg8-dev:armhf (8c-2ubuntu11) ... 1385s Setting up libpangocairo-1.0-0:armhf (1.52.1+ds-1) ... 1385s Setting up gcc-arm-linux-gnueabihf (4:13.2.0-7ubuntu1) ... 1385s Setting up g++-13-arm-linux-gnueabihf (13.2.0-21ubuntu1) ... 1385s Setting up gfortran-13-arm-linux-gnueabihf (13.2.0-21ubuntu1) ... 1385s Setting up g++-arm-linux-gnueabihf (4:13.2.0-7ubuntu1) ... 1385s Setting up g++-13 (13.2.0-21ubuntu1) ... 1385s Setting up libpng-dev:armhf (1.6.43-3) ... 1385s Setting up libjpeg-dev:armhf (8c-2ubuntu11) ... 1385s Setting up gcc (4:13.2.0-7ubuntu1) ... 1385s Setting up gfortran-arm-linux-gnueabihf (4:13.2.0-7ubuntu1) ... 1385s Setting up gfortran-13 (13.2.0-21ubuntu1) ... 1385s Setting up r-base-core (4.3.3-2build1) ... 1385s 1385s Creating config file /etc/R/Renviron with new version 1385s Setting up r-cran-labeling (0.4.3-1) ... 1385s Setting up r-cran-lattice (0.22-5-1) ... 1385s Setting up r-cran-nlme (3.1.164-1) ... 1385s Setting up r-cran-farver (2.1.1-1) ... 1385s Setting up g++ (4:13.2.0-7ubuntu1) ... 1385s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 1385s Setting up r-cran-viridislite (0.4.2-2) ... 1385s Setting up build-essential (12.10ubuntu1) ... 1385s Setting up r-cran-commonmark (1.9.1-1) ... 1385s Setting up r-cran-r6 (2.5.1-1) ... 1385s Setting up r-cran-magrittr (2.0.3-1) ... 1385s Setting up r-cran-rlang (1.1.3-1) ... 1385s Setting up r-cran-matrixstats (1.2.0-1) ... 1385s Setting up r-cran-xfun (0.41+dfsg-1) ... 1385s Setting up r-cran-withr (3.0.0+dfsg-1) ... 1385s Setting up r-cran-base64enc (0.1-3-3) ... 1385s Setting up r-cran-yaml (2.3.8-1) ... 1385s Setting up r-cran-evaluate (0.23-1) ... 1385s Setting up r-cran-highr (0.10+dfsg-1) ... 1385s Setting up r-cran-fansi (1.0.5-1) ... 1385s Setting up r-cran-mass (7.3-60.0.1-1) ... 1385s Setting up r-cran-glue (1.7.0-1) ... 1385s Setting up r-cran-cli (3.6.2-1) ... 1385s Setting up gfortran (4:13.2.0-7ubuntu1) ... 1385s update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f95 (f95) in auto mode 1385s update-alternatives: warning: skip creation of /usr/share/man/man1/f95.1.gz because associated file /usr/share/man/man1/gfortran.1.gz (of link group f95) doesn't exist 1385s update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f77 (f77) in auto mode 1385s update-alternatives: warning: skip creation of /usr/share/man/man1/f77.1.gz because associated file /usr/share/man/man1/gfortran.1.gz (of link group f77) doesn't exist 1385s Setting up r-cran-lifecycle (1.0.4+dfsg-1) ... 1385s Setting up r-cran-pkgconfig (2.0.3-2build1) ... 1385s Setting up r-cran-utf8 (1.2.4-1) ... 1385s Setting up r-cran-colorspace (2.1-0+dfsg-1) ... 1385s Setting up r-cran-markdown (1.12+dfsg-1) ... 1385s Setting up r-cran-rcolorbrewer (1.1-3-1build1) ... 1385s Setting up r-cran-isoband (0.2.7-1) ... 1385s Setting up r-cran-gtable (0.3.4+dfsg-1) ... 1385s Setting up r-cran-matrix (1.6-5-1) ... 1385s Setting up r-cran-knitr (1.45+dfsg-1) ... 1385s Setting up r-cran-mgcv (1.9-1-1) ... 1385s Setting up r-cran-vctrs (0.6.5-1) ... 1385s Setting up r-cran-pillar (1.9.0+dfsg-1) ... 1385s Setting up r-base-dev (4.3.3-2build1) ... 1385s Setting up r-cran-munsell (0.5.0-2build1) ... 1385s Setting up r-cran-tibble (3.2.1+dfsg-2) ... 1385s Setting up r-cran-scales (1.3.0-1) ... 1385s Setting up pkg-r-autopkgtest (20231212ubuntu1) ... 1385s Setting up r-cran-ggplot2 (3.4.4+dfsg-1) ... 1385s Setting up autopkgtest-satdep (0) ... 1385s Processing triggers for man-db (2.12.0-3build4) ... 1387s Processing triggers for install-info (7.1-3build1) ... 1387s Processing triggers for libc-bin (2.39-0ubuntu6) ... 1491s (Reading database ... 72245 files and directories currently installed.) 1491s Removing autopkgtest-satdep (0) ... 1525s autopkgtest [12:43:25]: test pkg-r-autopkgtest: /usr/share/dh-r/pkg-r-autopkgtest 1525s autopkgtest [12:43:25]: test pkg-r-autopkgtest: [----------------------- 1528s Test: Try to load the R library matrixStats 1528s 1528s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 1528s Copyright (C) 2024 The R Foundation for Statistical Computing 1528s Platform: arm-unknown-linux-gnueabihf (32-bit) 1528s 1528s R is free software and comes with ABSOLUTELY NO WARRANTY. 1528s You are welcome to redistribute it under certain conditions. 1528s Type 'license()' or 'licence()' for distribution details. 1528s 1528s R is a collaborative project with many contributors. 1528s Type 'contributors()' for more information and 1528s 'citation()' on how to cite R or R packages in publications. 1528s 1528s Type 'demo()' for some demos, 'help()' for on-line help, or 1528s 'help.start()' for an HTML browser interface to help. 1528s Type 'q()' to quit R. 1528s 1528s > library('matrixStats') 1528s > 1528s > 1528s Other tests are currently unsupported! 1528s They will be progressively added. 1529s autopkgtest [12:43:29]: test pkg-r-autopkgtest: -----------------------] 1533s pkg-r-autopkgtest PASS 1533s autopkgtest [12:43:33]: test pkg-r-autopkgtest: - - - - - - - - - - results - - - - - - - - - - 1536s autopkgtest [12:43:36]: @@@@@@@@@@@@@@@@@@@@ summary 1536s run-unit-test PASS 1536s pkg-r-autopkgtest PASS