通过复制行来“增长”数据帧

时间:2019-07-13 19:32:54

标签: r

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

pars <- data.frame(a=3, b=4, c=5)

改变参数a

dfa <- data.frame(a = 1:6)

然后尝试将其加入新的数据框:

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)

对于大约30个参数的模型,这不是一种非常有效的方法。 我猜这应该放在某种循环中。我可能不是尝试这样做的第一人,所以如果有人已经这样做,我将不胜感激。一些类似问题的答案是this,而我尝试使用this作为尝试的一部分。此注释也很有趣,因为我有不同数量的行要重复:

n.times <- c(2,4) ; df[rep(seq_len(nrow(df)), n.times),] 

对此有任何帮助,我们深表感谢。

1 个答案:

答案 0 :(得分:1)

由于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]可以解决这一问题。