我正在尝试校准模型,并且需要更改一些参数以查看输出的行为。为此,我想创建一个数据框,其中每一行都是一组参数。
数据集示例:
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),]
对此有任何帮助,我们深表感谢。
答案 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]可以解决这一问题。