R - 我可以在这里避免循环吗?

时间:2014-08-10 06:03:06

标签: r for-loop apply-templates

我是一个尝试使用应用功能的R新手,建议作为好的风格,但是我已经失败了。

我有两个数据框 - 一个是我的银行对帐单中的记录集合,另一个是从数据库读入的一堆记录,详细说明了从该语句应用于一个或另一个列的正则表达式模式并赋值到帐户类别,有时是交叉引用。

我已经定义了一个函数,它将每个正则表达式模式记录应用于语句数据框,但是对于模式集中的每个记录使用apply函数只在原始语句数据框上运行 - 而不是由任何以前的模式的应用。

我怀疑这是一个操作本质上是顺序的情况,因此应用函数永远不会工作 - 但我错过了什么?为了准确显示我想要做的事情,下面是代码,使用for循环,它确实有效:

doRegex <- function (df.Statement, df.Patterns) 
{
    m <- as.matrix(df.Patterns)
    for (i in 1:NROW(df.Patterns))
    {
        v <- m[i,]
        rows <- grep(v[2], df.Statement[,v["txtColumn"]], TRUE)
        v["txtAccount"] -> df.Statement[rows,"Account"]
        if (!is.na(v["txtXRef"])) v["txtXRef"] ->  df.Statement[rows,"XRef"]
    }
    return(df.Statement)
}

doRegex(df.recentCSV, df.Patterns) -> df.recentCSV

0 个答案:

没有答案