我创建了一个包含 11 列和 15 行的空数据框,并随后命名了这些列。
L_df <- data.frame(matrix(ncol = 11, nrow = 15))
names(L_df) <- paste0("L_por", 0:10)
w <- c(0.2, 0.4, 0.6, 0.8, 1, 1.2, 1.4, 1.6, 1.8, 2, 2.2, 2.4, 2.6, 2.8, 3)
wu <- 0
L <- 333.7
pm <- c(2600, 2574, 2548, 2522, 2496, 2470, 2444, 2418, 2392, 2366, 2340)
数据框如下所示:
head(L_df)
L_por0 L_por1 L_por2 L_por3 L_por4 L_por5 L_por6 L_por7 L_por8 L_por9 L_por10
1 NA NA NA NA NA NA NA NA NA NA NA
2 NA NA NA NA NA NA NA NA NA NA NA
3 NA NA NA NA NA NA NA NA NA NA NA
4 NA NA NA NA NA NA NA NA NA NA NA
5 NA NA NA NA NA NA NA NA NA NA NA
6 NA NA NA NA NA NA NA NA NA NA NA
现在,我想填充数据框按列,基于公式。我尝试用嵌套的 for 循环来表达这一点:
for (i in 1:ncol(L_df)) {
pm_tmp <- pm[i]
col_tmp <- colnames(L_df)[i]
for (j in 1:nrow(L_df)) {
w_tmp <- w[j]
L_por_tmp <- pm_tmp*L*((w_tmp-wu)/100)
col_tmp[j] <- L_por_tmp
}
}
对于每个column,我迭代预定义的向量pm
长度为 11。对于每个row,我迭代预定义的向量w
长度为 15(重复每列)。
示例:首先,选择pm[1]
对于第一列。二、选择w[i]
对于第一列中的每一行。将公式存储在L_por_tmp
并用它填充第一列从第 1 行到第 15 行。对于第二列,整个过程应该重新开始(使用pm[2]
) with w[i]
每行等等。wu
and L
都固定在公式中。
R 执行代码没有错误。当我检查 tmp 值时,它们是正确的。但是,数据框仍为空。L_df
没有被填满。我想用循环解决这个问题,但如果您有其他解决方案,我很高兴听到它们!我的印象是可能有一种更顺利的方法来做到这一点。干杯!