我在R和Matlab中生成数据进行2次单独分析,我想确定两个系统中的结果是否相等.在两组代码之间由于随机数发生器而存在固有的可变性.如果可能的话,我想删除这种可变性来源.有没有人知道在Matlab和R中设置相同的起始种子的方法?我在下面提供一些演示代码.
%Matlab code
seed=rng %save seed
matlabtime1=randn(1,5) %generate 5 random numbers from standard normal
rng(seed) %get saved seed
matlabtime2=randn(1,5) %generates same output as matlabtime1
#R code
set.seed(3) #save seed
r.time1=rnorm(5) #generate 5 random numbers from standard normal
set.seed(3) #get saved seed
r.time2=rnorm(5) #generates same output as r.time1
Run Code Online (Sandbox Code Playgroud)
基本上,我希望matlabtime2和r.time2的结果完全匹配.(我使用的代码比这个说明性的演示更复杂,所以只用一种语言重写并不是一个真正可行的选择.)
我有4个实验组的比例响应数据,每组计算2个不同的统计数据。我想要下图(可以实现):
我通过以下代码获得此图:
Group<-c('a','b','c','d','a','b','c','d')
Statistic<-c('Mean','Mean','Mean','Mean','d','d','d','d')
Val<-c(.75,.83,.79,.69,.5,.02,.1,.3)
dfm2<-data.frame(cbind(Group,Statistic,Val))
ggplot(dfm2,aes(x = Group,y = Val)) +
geom_bar(aes(fill = Statistic),position = dodge',stat='identity')
Run Code Online (Sandbox Code Playgroud)
但是,当我通过添加代码行来更改y轴的限制(由于我有比例,因此更改为[0,1])时:
+ scale_y_continuous(limits=c(0, 1))
Run Code Online (Sandbox Code Playgroud)
我懂了
Error: Discrete value supplied to continuous scale
Run Code Online (Sandbox Code Playgroud)
所以我知道这意味着我有一个非连续变量。我尝试通过使用as.numeric()和无数其他选项来转换我的统计变量,但无济于事。如果有人可以帮助我解决这个问题和/或解释造成问题的原因,我将非常感激。