我可以用更简单的术语编写这个'for'代码吗?也许使用'申请'?

时间:2017-03-17 00:41:19

标签: r for-loop apply

有没有办法在R中用更简单的术语编写这段代码?

也许使用apply

感谢任何提示。

for(i in 1:nrow(mat1)){
  mat1$c8[i] = formula(mat1$c1[i], mat1$c2[i], mat1$c3[i], mat1$c4[i], mat1$c5[i], mat1$c6[i], mat1$c7[i])
}

数据集:

mat <- data.frame(c1 = sample(1:3,  100, replace = TRUE), 
                  c2 = sample(1:4,  100, replace = TRUE), 
                  c3 = sample(1:2,  100, replace = TRUE), 
                  c4 = sample(1:2,  100, replace = TRUE), 
                  c5 = sample(0:1,  100, replace = TRUE), 
                  c6 = sample(0:1,  100, replace = TRUE), 
                  c7 = sample(0:1,  100, replace = TRUE)) 

mat1 <- mat

mat1

1 个答案:

答案 0 :(得分:0)

您尝试做的事情似乎有些不寻常,但如果您坚持这样做,您需要的是Map()mapply()。这些函数将使用多个输入向量多次调用函数,将输出组合在列表(Map())或最简单的输出(mapply())中。

mat$c8 <- Map(formula, mat$c1, mat$c2, mat$c3, mat$c4, 
              mat$c5, mat$c6, mat$c7)

你也可以将它们全部组合成一行,尽管我认为上述内容可以更好地传达你想要实现的目标。

mat$c8 <- do.call(Map, c(list(formula), mat))

有关lapply()家庭的详细概述,functionals chapterAdvanced R非常好。

相关问题