我是一个 R 新手,试图使用应用功能,推荐为好风格,但我失败了。
我有两个数据框 - 一个是我的银行对帐单中的记录集合,另一个是从数据库中读取的一堆记录,详细说明了一个正则表达式模式以应用于报表中的一个或其他列并将值分配给一个帐户类别,有时是交叉引用。
我已经定义了一个函数,它将每个正则表达式模式记录应用于语句数据帧,但是对模式集中的每个记录使用应用函数只在原始语句数据帧上操作 - 而不是由应用程序操作的框架任何以前的模式。
我怀疑这是一种操作本质上是按顺序排列的情况,因此应用函数永远不会起作用 - 但我错过了什么吗?为了准确显示我正在尝试做的事情,下面是使用 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