相关疑难解决方法(0)

如何在公式中按字符串使用引用变量?

在下面的最小示例中,我尝试vars在回归公式中使用字符串的值.但是,我只能将变量名称字符串("v2 + v3 + v4")传递给公式,而不是该字符串的实际含义(例如,"v2"是dat $ v2).

我知道有更好的方法来运行回归(例如lm(v1 ~ v2 + v3 + v4, data=dat)).我的情况更复杂,我想弄清楚如何在公式中使用字符串.有什么想法吗?

更新以下代码

# minimal example 
# create data frame
v1 <- rnorm(10)
v2 <- sample(c(0,1), 10, replace=TRUE)
v3 <- rnorm(10)
v4 <- rnorm(10)
dat <- cbind(v1, v2, v3, v4)
dat <- as.data.frame(dat)

# create objects of column names
c.2 <- colnames(dat)[2]
c.3 <- colnames(dat)[3]
c.4 <- colnames(dat)[4]

# shortcut to get to the type of object my full code produces
vars <- …
Run Code Online (Sandbox Code Playgroud)

string r names formula paste

40
推荐指数
2
解决办法
4万
查看次数

在没有全局分配的情况下,在每次函数迭代时动态更新输入数据帧

我有(1)评级参考表,以及(2)基于这些评级随机生成结果的函数,并根据生成的结果更新评级.

虽然下面的可重复示例有更简单的解决方案,但预期的应用是根据他们的Elo评级来模拟对手之间的结果,并且在每轮之后更新评级以便运行模拟"热".

在这里,我有一个评级参考表,ref并使用该函数genResult生成随机结果并使用全局赋值更新参考表.

set.seed(123)
ref <- data.frame(id = LETTERS[1:5],
                  rating = round(runif(5, 100, 200)))

genResult <- function(ref) {

  id_i <- LETTERS[floor(runif(1, 1, 5))]

  score_i <- round(rnorm(1, 0, 20))

  ref[ref$id == id_i,]$rating <- ref[ref$id == id_i,]$rating + score_i

  result_i <- data.frame(id = id_i, score = score_i)

  # assign('ref', ref, envir=.GlobalEnv)
  ref <<- ref

  return(list(result_i, ref))
}
Run Code Online (Sandbox Code Playgroud)

复制此功能两次,我们可以看到ref按预期更新.

replicate(2, genResult(ref), simplify = F)
Run Code Online (Sandbox Code Playgroud)

回到这里,我们可以看到参考表在两次迭代中的每次迭代中都会更新.

[[1]]
[[1]][[1]]
id score
1  A     1

[[1]][[2]]
id rating
1  A …
Run Code Online (Sandbox Code Playgroud)

loops r function global-variables variable-assignment

8
推荐指数
1
解决办法
134
查看次数

对于R中的循环和计算速度

在过去,我编写了R代码,需要for循环内部的循环.通常,此代码执行起来相当耗时.我在网上看过这是R工作循环的结果.我还读到在R中使用for循环,例如C++或Java,可以加快计算时间.

有没有人有这方面的经验,可以指出一些我能读到的简单例子?

你也可以为for循环调用另一种语言,但循环中的所有内容仍然是标准的R代码吗?

for-loop r

0
推荐指数
2
解决办法
385
查看次数