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