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,我已将其用作我尝试的一部分。这个评论也很有趣,因为我有不同数量的行要重复:
n.times <- c(2,4) ; df[rep(seq_len(nrow(df)), n.times),]
对此的任何帮助表示赞赏。
解决方案
由于 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] 会解决这个问题。
推荐阅读
- angular - 单击添加到表格时自动滚动条底部
- spring - Apache Tiles 退休了。备择方案?
- perl - 如何修复 perl 错误:每个 arg 1 的类型必须是散列(不是散列元素)
- compiler-errors - 通过特征和泛型类型来规范化可序列化数据的关联类型
- apache-spark - 在 Pyspark ML 的 SqlTransformer 中将元数据添加到计算字段
- java - 编写一个方法,计算有多少以字母“A”开头的单词
- angular - 在使用 MSAL-Angular 并为 Azure Active Directory 图形 api 请求 access_token 时,它提供了带有 Microsoft 图形 api 的 aud 的令牌
- mysql - 为什么 MariaDb 似乎忽略了 `int(n)` 中的参数?
- bash - 如何获取执行程序的PID?
- java - 我正在尝试在 Spring Boot Eclipse 中运行 Kafka Consumer 和 Producer。但是超时错误