Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R应用函数填充数据框,在多个列和行中获取参数_R_Loops_Dictionary_Apply_Sapply - Fatal编程技术网

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)
})