R应用函数填充数据框,在多个列和行中获取参数
我有一个空白值的网格,我想使用一个函数来填充,该函数在给定的行和列中都有多个参数 以下是一个例子:R应用函数填充数据框,在多个列和行中获取参数,r,loops,dictionary,apply,sapply,R,Loops,Dictionary,Apply,Sapply,我有一个空白值的网格,我想使用一个函数来填充,该函数在给定的行和列中都有多个参数 以下是一个例子: #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 c
#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
}
对于这个数据帧的每个给定单元格,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)
})
res看起来您的函数已经接受了向量,因此my_funct(dat$var1,dat$var2,1)
将返回与data.frame的行数相同长度的向量。
res <- sapply(1:100, function(i) {
my_funct(df[, "var1"], df[, "var2"], i)
})