R - 应用对多个变量使用相同迭代器的族函数

时间:2017-03-17 18:27:55

标签: r loops apply plyr

alply(df1 %>% as.matrix, 2, foo, keyword.count)

我有上面的代码行应用函数' foo'在< df1'的每一列上。我想为函数foo添加一个额外的参数(df2),其列数与df1相同。

之类的东西
alply(df1 %>% as.matrix, 2, foo, df2 %>% as.matrix, keyword.count)

我想要一个对df1和df2使用相同迭代器的函数。在循环方面,第一次迭代中的df1 [1]和df2 [1],第二次迭代中的df1 [2]和df2 [2],依此类推。 在使用alply的当前实现中,df1 [1]使用df2矩阵作为参数而不是df2的列。

就循环而言,它看起来像这样

for(int i=0; i<ncol(df1); i++){
 foo(df1[i], df2[i], keyword.count)
}

是否有适用的家庭功能允许我这样做?或某种方式来获得可以在&#34; foo&#34;中访问的迭代次数。 任何帮助将不胜感激

示例:

df1 <- data.frame(
       col1 = sample(LETTERS[1:5]),
       col2 = sample(LETTERS[6:10])
   )
df2 <- data.frame(
  col1 = sample(LETTERS[11:13]),
  col2 = sample(LETTERS[14:16])
)


foo <- function(terms, fixed_terms , collocated_words ) {
  terms <- terms[terms != ""]
  fixed_terms <- fixed_terms[fixed_terms != ""]

##use terms and fixed_terms in another function

}

mlply(.data =  as.matrix(df1),  .fun =  foo, fixed_terms = as.matrix(df2), collocated_word=2)

##error:
##Error in (function (terms, fixed_terms, collocated_words)  : 
##  unused arguments (col1 = "B", col2 = "H")

1 个答案:

答案 0 :(得分:1)

您可以使用mlply

mlply(as.matrix(df1), foo, argument2 = as.matrix(df2), 2)

您可能需要指定

调用每个矩阵foo的参数