小编Ela*_*663的帖子

修复整个会话的set.seed

我使用R构建一个基于代理的模型,使用蒙特卡罗过程.这意味着我有许多使用某种随机引擎的函数.为了获得可重复的结果,我必须修复种子.但是,据我所知,我必须在每个随机抽签或样本之前设置种子.这是一个真正的痛苦.有没有办法修理种子?

set.seed(123)
print(sample(1:10,3))
# [1] 3 8 4
print(sample(1:10,3))
# [1]  9 10  1
set.seed(123)
print(sample(1:10,3))
# [1] 3 8 4
Run Code Online (Sandbox Code Playgroud)

r random-sample montecarlo agent-based-modeling

24
推荐指数
3
解决办法
2万
查看次数

对于带有编码器错误的模拟数据,cv.glmnet对于岭而不是套索失败

要旨

错误: Error in predmat[which, seq(nlami)] = preds : replacement has length zero

上下文:数据用二进制y模拟,但有n编码器true y.数据是叠加的n时间,并且模型已经安装,试图获得true y.

收到错误

  1. L2罚款,但不是L1罚款.
  2. 当Y是编码器Y时,而不是当它是真正的Y.
  3. 错误不是确定性的,而是取决于种子.

更新:错误是针对1.9-8之后的版本.1.9-8不会失败.

再生产

基础数据:

library(glmnet)
rm(list=ls())
set.seed(123)

num_obs=4000
n_coders=2
precision=.8

X <- matrix(rnorm(num_obs*20, sd=1), nrow=num_obs)
prob1 <- plogis(X %*% c(2, -2, 1, -1, rep(0, 16))) # yes many zeros, ignore
y_true <- rbinom(num_obs, 1, prob1)
dat <- data.frame(y_true = y_true, X = X)
Run Code Online (Sandbox Code Playgroud)

创建编码员

classify <- function(true_y,precision){
  n=length(true_y) …
Run Code Online (Sandbox Code Playgroud)

r glmnet

9
推荐指数
2
解决办法
1834
查看次数

确保函数不使用全局变量

这可能与类似的问题有点相反。我希望R在代码中的任何位置中止\警告,如果函数在父环境中使用了变量。是否有一些基本的选择可以实现?我想要一个会话通用的解决方案,而不是特定的检查。谢谢。

scope r

5
推荐指数
1
解决办法
304
查看次数