【发布时间】:2019-12-06 20:35:26
【问题描述】:
我正在尝试创建一个变量,它是 4 个其他变量的函数。我有以下代码:
set.seed(123)
iter <- 1000
group <- c('A','B','C','D','E','F')
for (i in group) {
df <- df1[df1$group == i,]
x_ <- vector(mode="numeric", length=1000)
assign(eval(paste0("X_", i)), globalenv()) #This is the issue
a <- rnorm(iter, mean=df$a, sd=df$sea)
b <- rnorm(iter, mean=df$b, sd=df$seb)
c <- rnorm(iter, mean=df$c, sd=df$sec)
z <- rnorm(iter, mean=df$zbar, sd=df$se_z)
X_[i] = (a + c*(z-df$zbar))/(-b)
}
我无法创建唯一的特定于组的变量(例如 X_A、X_B、...),并且我不确定为什么 -assign( )- 函数无法正常工作。数据框df1 有 6 行(每组一行),然后列数等于变量数加上组的字符串变量。我不想将这个新变量 X_[i] 附加到数据集,我只是想将它放在全局环境中。我认为问题在于我分配了变量的位置,但它没有生成数字变量 X。
df1 是一个包含a, sea, b, seb, c, sec, zbar, se_z 的 9 个变量的 6 个观察值的数据框。这些分别只是 a、b、c 和 z 的平均值和标准差。第 9 个变量是 group,其中包含 A、B、...、F。当我使用代码 df <-df1[df1$group == i,] 时,我试图为每个组实体创建一个唯一的 X 变量。
【问题讨论】:
-
你能准确地说出
df1和crop是什么吗?如果df1是数据框,还提供df1的可重现示例 -
我已经更新了问题,感谢您指出这一点
-
这在 R 中是一种糟糕的设计模式。与其将数据粘贴到变量名称中,不如将值存储在命名列表中。这使得在 R 中处理事情变得更加容易。
get()/assign()通常应该避免
标签: r loops dataframe for-loop