R填充数据框应用函数在多列和多行中获取参数
R populate data frame applying function taking parameters in multiple columns and rows
我有一个空白值网格,我想使用一个在给定行和列中采用多个参数的函数来填充。
这是一个例子:
#make up var1 and var2 and join into data frame
var1 <- rnorm(500, 5, 2)
var2 <- rnorm(500, 20, 20)
df <- data.frame(var1, var2)
#define columns
x_values <- as.character(1:100)
#create columns of df and fill with NA
df[, x_values] <- NA
#define function that determines values in each cell
my_funct <- function(var1, var2, col){
(var1^3 - var2^2)*col
}
我的数据看起来像
var1 var2 1 2 3 4 5 6
1 7.0570704 31.508049 NA NA NA NA NA NA
2 0.6965604 32.288748 NA NA NA NA NA NA
3 4.9869819 4.369592 NA NA NA NA NA NA
4 8.0933870 31.038571 NA NA NA NA NA NA
5 6.1667702 26.887448 NA NA NA NA NA NA
6 3.1476294 -10.806836 NA NA NA NA NA NA
对于此数据框的每个给定单元格 df[i, j]
,我想用 my_funct
的输出填充它,它采用输入 df[i, 'var1']
、df[i, 'var2']
,以及列名值(我可以简单地使用 j-2)。
我写了一个嵌套循环遍历每一行和每一列,但速度非常慢。我猜 apply 或 map 函数会更有效率。有帮助吗?
您应该能够在不遍历行的情况下遍历列:
res <- sapply(1:100, function(i) {
my_funct(df[, "var1"], df[, "var2"], i)
})
sapply
returns 一个矩阵,其中每一列对应于 i
.
我有一个空白值网格,我想使用一个在给定行和列中采用多个参数的函数来填充。
这是一个例子:
#make up var1 and var2 and join into data frame
var1 <- rnorm(500, 5, 2)
var2 <- rnorm(500, 20, 20)
df <- data.frame(var1, var2)
#define columns
x_values <- as.character(1:100)
#create columns of df and fill with NA
df[, x_values] <- NA
#define function that determines values in each cell
my_funct <- function(var1, var2, col){
(var1^3 - var2^2)*col
}
我的数据看起来像
var1 var2 1 2 3 4 5 6
1 7.0570704 31.508049 NA NA NA NA NA NA
2 0.6965604 32.288748 NA NA NA NA NA NA
3 4.9869819 4.369592 NA NA NA NA NA NA
4 8.0933870 31.038571 NA NA NA NA NA NA
5 6.1667702 26.887448 NA NA NA NA NA NA
6 3.1476294 -10.806836 NA NA NA NA NA NA
对于此数据框的每个给定单元格 df[i, j]
,我想用 my_funct
的输出填充它,它采用输入 df[i, 'var1']
、df[i, 'var2']
,以及列名值(我可以简单地使用 j-2)。
我写了一个嵌套循环遍历每一行和每一列,但速度非常慢。我猜 apply 或 map 函数会更有效率。有帮助吗?
您应该能够在不遍历行的情况下遍历列:
res <- sapply(1:100, function(i) {
my_funct(df[, "var1"], df[, "var2"], i)
})
sapply
returns 一个矩阵,其中每一列对应于 i
.