在 R 中使用循环添加列

Kar*_*rly 1 loops for-loop r

我的数据集目前如下所示:

Contract number    FA      NAAR        q    
CM300             9746     47000    0.5010
UL350            80000       0      0.01234
RAD3421          50000     10000    0.9431
Run Code Online (Sandbox Code Playgroud)

我想为每行添加一个包含 0-1 之间随机生成的数字(称为试验)的列,并将该数字与 q 列中的值与另一列进行比较,如果 q < 试验则为“l”,并且为“d”如果 q > 审判。

这是我的代码,一次性完成了这项任务。

trial <- runif(3, min = 0, max = 1)
data2 <- mutate(data, trial)
data2 <- mutate(data, qresult = ifelse(data2$q <= data2$trial, 'l', 'd'))
Run Code Online (Sandbox Code Playgroud)

我的努力是让它重复几次试验,每次重复都会在表格上添加新列。我尝试了几种类型的循环,并浏览了几个问题,但似乎无法弄清楚。我对 R 相当陌生,所以任何帮助将不胜感激!

aka*_*h87 7

您可能想使用以下方法来解决此问题:

df <- data.frame(contract = c("CM300", "UL350", "RAD3421"), 
                 FA = c(9746, 80000, 50000), 
                 NAAR = c(47000, 0, 10000), 
                 q = c(0.5010, 0.01234, 0.9431))

trialmax <- 10
for(i in 1:trialmax){ 
  trial <- runif(3, min = 0, max = 1)
  df[ , paste0("trial", i)]   <- trial
  df[ , paste0("qresult", i)] <- ifelse(trial >= df$q, "l", "d")
  }
Run Code Online (Sandbox Code Playgroud)

这里我假设你想要 10 次试验,但你可以更改trialmax为你想要的任何值。