我的代码在下面
myfunction = function (D)
{
if( unique( commonData[ , FLAG] ) == "Yes" )
{
D[,'YD_Yes'][rownum ] <- commonData[commonData[ , FLAG ] == "Yes", "STRS" ] ;
D[,'PD_Yes'][ rownum ] <- commonData[ commonData[ , FLAG ] == "Yes", "VAL" ];
} else if (unique(commonData[, FLAG]) == "No")
{
D[,'YD_Pure_Wasted'][[ rownum ]] <- commonData[commonData[ , FLAG ] == "Pure_No", "STRS" ] ;
D[,'PD_Pure_Wasted'][[ rownum ]] <- commonData[commonData[ , FLAG ] == "Pure_No", "VAL" ] ;
} else {
D[,'YD_Repeated_Wasted'][[ rownum ]] <- commonData[commonData[ , FLAG ] == "Repeated_No", "STRS" ] ;
D[,'PD_Repeated_Wasted'][[ rownum ]] <- commonData[commonData[ , FLAG ] == "Repeated_No", "VAL" ] ;
}
temp = lapply(myfunction, mydataframe)
我希望函数中的计算能够执行。但是错误消息是:
Error in `[.default`(`*tmp*`, "YD_Yes") :
incorrect number of dimensions
答案 0 :(得分:0)
首先,欢迎来到SO。
现在,关于您的问题:正如“罗希特”所说,l强不是解决问题的正确方法。您应该改用Apply。
但是您的代码中还有另一个问题(不完全是问题,而是代码难闻的气味),它们是您在函数中使用的变量:rownum,commonData和FLAG。它们超出了范围变量,很难跟踪它们。
因此,首先在您的函数中声明它们:
myFunction = function(D, rownum, commonData, FLAG) {
# your function code
}
它们使用apply来迭代“ myFunction”中的每一行:
apply(D, 1, rownum, commonData, FLAG)
第一个应用参数是要迭代的数据(第一个函数参数),最后三个参数是其余的函数参数。
但是请记住:在提出问题之前,请尝试创建一个可复制的示例,以便我们可以更快地为您提供帮助。