R &引用;“成长”;通过复制行创建数据帧

R &引用;“成长”;通过复制行创建数据帧,r,R,我正在尝试校准一个模型,我需要改变一些参数来查看输出的行为。为此,我想创建一个数据帧,其中每行是一组参数。 示例数据集: pars <- data.frame(a=3, b=4, c=5) 然后尝试将其加入到新的数据帧中: bind_cols(dfa, pars[rep(seq_len(nrow(pars)), each=length(a)),]) 同样的过程也适用于b dfb <- data.frame(b = 3:6) dfb <- bind_cols(df

我正在尝试校准一个模型,我需要改变一些参数来查看输出的行为。为此,我想创建一个数据帧,其中每行是一组参数。
示例数据集:

pars <- data.frame(a=3, b=4, c=5)
然后尝试将其加入到新的数据帧中:

bind_cols(dfa, pars[rep(seq_len(nrow(pars)), each=length(a)),])  
同样的过程也适用于
b

dfb <- data.frame(b = 3:6)

dfb <- 
  bind_cols(dfb, pars[rep(seq_len(nrow(pars)), each=length(dfb$b)),]) %>% 
  select(-c(b1))

bind_rows(dfa,dfb)

dfb由于默认情况下R填充列,所以前两个示例只需

data.frame(dfa, pars)
#   a a.1 b c
# 1 1   3 4 5
# 2 2   3 4 5
# 3 3   3 4 5
# 4 4   3 4 5
# 5 5   3 4 5
# 6 6   3 4 5
data.frame(dfb, pars)
#   b a b.1 c
# 1 3 3   4 5
# 2 4 3   4 5
# 3 5 3   4 5
# 4 6 3   4 5

由于您的模型不使用a.1或b.1,因此您不必排除它们,但将[,-2]添加到第一个和[,-3]将解决这一问题

检查基本函数
?expand.grid
。我做过,以前也用过,但它提供了我不想要的所有可能的参数组合。我不清楚你在找什么。对于每种新变量,您的代码似乎都会复制上一次迭代。对于30个变量,即使每个变量只有两个值,这不会导致2^30,或者超过10亿个不同的组合吗?
n.times <- c(2,4) ; df[rep(seq_len(nrow(df)), n.times),] 
data.frame(dfa, pars)
#   a a.1 b c
# 1 1   3 4 5
# 2 2   3 4 5
# 3 3   3 4 5
# 4 4   3 4 5
# 5 5   3 4 5
# 6 6   3 4 5
data.frame(dfb, pars)
#   b a b.1 c
# 1 3 3   4 5
# 2 4 3   4 5
# 3 5 3   4 5
# 4 6 3   4 5