Jak zauważa David Arenburg, jest to różnica pomiędzy 3 Wersje 2-bitowe i 64-bitowe R, przynajmniej na komputerach z systemem Windows. Można przypuszczać, że chodzi o jakiś błąd zaokrąglania. Co ciekawe, to 32-bitowy R dostaje właściwą odpowiedź, podczas gdy 64-bitowy R znajduje zbyt wiele unikalnych liczb.
pierwsze potwierdzenie, że 9183
jest rzeczywiście poprawna odpowiedź, użyłem pakiet gmp
(otoki dla C wielokrotnej precyzji arytmetycznej biblioteki GMP), która zapewnia wyniki, które nie są obciążone błędami zaokrągleń:
library(gmp)
x <- as.bigz(2:100)
length(unique(do.call(c, sapply(x, function(X) x^X))))
[1] 9183
Oto wyniki z moim 32-bitowej R:
length(unique(sort(c(outer(2:100,2:100,"^")))))
# [1] 9183
R.version[1:7] _
# platform i386-w64-mingw32
# arch i386
# os mingw32
# system i386, mingw32
# status
# major 3
# minor 1.2
A oto wyniki mojego 64-bitowej R:
length(unique(sort(c(outer(2:100,2:100,"^")))))
# [1] 9220
R.version[1:7]
# platform x86_64-w64-mingw32
# arch x86_64
# os mingw32
# system x86_64, mingw32
# status
# major 3
# minor 1.2
Czy możesz wstawić 'sessionInfo()' z obu w celu potwierdzenia wersji/kompilacji? – MrFlick
Myślę, że jest to różnica między wersjami 32-bitowymi i 64-bitowymi. Korzystasz z 64 na Rstudio i 32 na zwykłym R. W Rstudio idź do Tools -> Global Options -> R version -> Change -> przejdź do wersji 32-bitowej 3.1.1 i ponownie uruchom swój kod –
Otrzymuję 9220 z rzędu to w wersji 3.1.2 (64-bitowej) w terminalu RStudio i R, a 9183, gdy uruchamiam go w wersji 32-bitowej ... Potwierdzam propozycję @ DavidArenburga – andyteucher