所以,我只是在手动计算eR中的值,我发现有些东西对我来说有点令人不安.
e使用R exp()命令的价值......
exp(1)
#[1] 2.718282
Run Code Online (Sandbox Code Playgroud)
现在,我将尝试使用手动计算它 x = 10000
x <- 10000
y <- (1 + (1 / x)) ^ x
y
#[1] 2.718146
Run Code Online (Sandbox Code Playgroud)
不完全,但我们会尝试更接近使用 x = 100000
x <- 100000
y <- (1 + (1 / x)) ^ x
y
#[1] 2.718268
Run Code Online (Sandbox Code Playgroud)
温暖但有点偏......
x <- 1000000
y <- (1 + (1 / x)) ^ x
y
#[1] 2.71828
Run Code Online (Sandbox Code Playgroud)
现在,让我们尝试一个巨大的
x <- 5000000000000000
y <- (1 + (1 / x)) ^ x
y
#[1] 3.035035 …Run Code Online (Sandbox Code Playgroud) 我在 R 和 Mathematica 中计算了矩阵(I - Q)(I是单位矩阵)的逆矩阵,但与理论结果相比,R 给出了错误的结果。我附上了 R 和 Mathematica 中的代码,你可以看到结果是不同的。
R中的代码:
> Q <- matrix(c(25/26, 1/26, 0, 0, 0, 0, 0, 0,
+ 24/26, 1/26, 1/26, 0, 0, 0, 0, 0,
+ 25/26, 0, 0, 1/26, 0, 0, 0, 0,
+ 24/26, 1/26, 0, 0, 1/26, 0, 0, 0,
+ 24/26, 0, 0, 1/26, 0, 1/26, 0, 0,
+ 24/26, 1/26, 0, 0, 0, 0, 1/26, 0,
+ 24/26, 1/26, 0, 0, 0, 0, …Run Code Online (Sandbox Code Playgroud) 我不懂的东西正在我的两台电脑上发生.我想知道为什么会这样:
如果我输入:
x<-seq(0,20,.05)
x[30]
x[30]==1.45
Run Code Online (Sandbox Code Playgroud)
有人有一个线索,为什么我从最后一行代码获得一个假?我的另一台计算机上也发生了同样的事情.我在这做错了什么?
谢谢您的帮助
为什么这两个不会返回相同的结果?
D = data.frame( x=c( 0.6 ) )
D$binned = cut( D$x, seq( 0.50,0.70,0.025 ), include.lowest=TRUE, right=FALSE )
D # 0.6 is binned correctly as [0.6,0.625)
D$binned = cut( D$x, seq( 0.55,0.65,0.025 ), include.lowest=TRUE, right=FALSE )
D # 0.6 is binned incorrectly as [0.575,0.6)
Run Code Online (Sandbox Code Playgroud) 当我使用R 3.0.1进行简单计算时,得到了以下结果.我的问题是为什么第一个和第三个方程的值不等于0?
> -0.0082 + 0.0632 - 0.055
[1] 6.938894e-18
> -0.0082 - 0.055 + 0.0632
[1] 0
> 0.0632 - 0.0082 - 0.055
[1] 6.938894e-18
Run Code Online (Sandbox Code Playgroud) 在a与b如下所示是相同的量,但是在河两种不同的方式进行计算,他们大多是相同的,但有几个大的差异.我无法弄清楚为什么会这样.
theta0 <- c(-0.4, 10)
OS.mean <- function(shape, rank, n=100){
term1 <- factorial(n)/(factorial(rank-1)*factorial(n-rank))
term2 <- beta(n-rank+1, rank) - beta(n-rank+shape+1, rank)
term1*term2/shape
}
OS.mean.theta0.100 <- OS.mean(theta0[1], rank=seq(1, 100, by=1))
Bias.MOP <- function(shape, scale, alpha){
scale*shape*OS.mean.theta0.100[alpha*100]/(1-(1-alpha)^shape) - scale
}
a <- rep(0, 98)
for(i in 2:99){
a[i-1] <- Bias.MOP(theta0[1], theta0[2], i/100)
}
plot(a)
b <- Bias.MOP(theta0[1], theta0[2], seq(0.02, 0.99, by=0.01))
plot(b)
a-b
Run Code Online (Sandbox Code Playgroud)
另一件奇怪的事情如下.
b[13] # -0.8185083
Bias.MOP(theta0[1], theta0[2], 0.14) # -0.03333929
Run Code Online (Sandbox Code Playgroud)
他们应该是一样的.但他们显然不是.为什么?
我有一个18位的int,R不理解,它返回的值与我输入的值不同
options(digits = 22)
> as.numeric(123456789123456789)
[1] 123456789123456784
Run Code Online (Sandbox Code Playgroud)
当使用具有integer64类的bit64时也是如此
> as.integer64(123456789123456789)
integer64
[1] 123456789123456784
Run Code Online (Sandbox Code Playgroud)
是否有其他包可以正确解释这个数字?
考虑以下:
> x<-178379.4999999999999999999999999999999
> x
[1] 178379.5
> round(x)
[1] 178380
Run Code Online (Sandbox Code Playgroud)
这似乎是一个基本的舍入错误。R中是否存在已知的舍入误差?还是因为即使在工作存储器中,R最多也只能处理22位数字?
我执行在概率模拟器中使用的代码,该代码会产生错误。对于实例,代码可以是下一个:
m<-replicate(101,NaN)
for(i in seq(0,1, by=0.01)){
m[(i*100)+1]<-i+1
}
print(m)
Run Code Online (Sandbox Code Playgroud)
由于值是NaN,因此会在m [30]和m [59]中产生错误。输出向量是下一个:
[1] 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 1.12 1.13 1.14
[16] 1.15 1.16 1.17 1.18 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.29 NaN
[31] 1.30 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.40 1.41 1.42 1.43 1.44
[46] 1.45 1.46 1.47 1.48 1.49 1.50 1.51 1.52 1.53 1.54 1.55 1.56 1.58 NaN 1.59
[61] 1.60 1.61 1.62 …Run Code Online (Sandbox Code Playgroud) 我刚刚了解到,与 Excel 相比,R 或 Python 定义舍入函数的方式不同。
撇开统计数据不谈,我的业务用户主要是 Excel 用户。这导致了一些混乱,因为 R/Python 脚本生成的数字可能由于这种舍入约定而有所不同。
在我看来,当 Excel 需要计算 1.5、2.5、3.5 等数字时,它总是“向上舍入”,而 R/Python 会四舍五入到最接近的偶数。
可能还有其他我不知道的假设可以区分 Excel 和 R/Python。
有没有办法在 R 中实现 Excel 的精确舍入函数?
在 Excel 中
在R中