-1

データフレームへの適用は1つの行に対して機能しますが、複数の行への適用はその特定の行に対して失敗します。例を次に示します(行954は単独で機能します)。

     apply(dx[954,], 1, query.db)
            2571
1092  0.06044147
3890  0.05948577
3273  0.05911261
794   0.05855583
4241  0.05854064
3560  0.05602690

ただし、data.frame内の残りの1つ以上の行と組み合わせると、行954はnumeric(0)を返します。

 apply(dx[954:955,], 1, query.db)
$`2571`
numeric(0)

$`1194`
         908         3754         5119         2835         3139         2775
 0.028935504  0.026941886  0.024762815  0.023335049  0.021892711  0.021001654
        1101         1762          401         3899         3727         4248
 0.020434257  0.020413724 -0.083333333  0.020111260  0.019872379  0.019840807
        3282         4585          798         5249          836         3570
 0.019729315  0.019524213  0.019440097  0.019410513  0.019288864  0.019052412
         726         3663         4775         3030         4938         3259
 0.018894556  0.018838258  0.018749506 -0.083333333  0.018416353  0.018240173
        1426         4563         3871          958         1242         1033

これが私が使用している関数です(<<-、別々の関数でそれらの変数にアクセスする必要があります!書き直しに関する提案は大歓迎です!an-line関数を書き直そうとした私の試みを見ることができます。動作せず、コメントアウトされています。

query.db <- function(dxdf){
    snquery = dbSendQuery(connection, paste("select distinct cpt4code from DxRxLookup where icd9code = '", dxdf[4], "'", sep = ""))
    cptcodes <<- dbGetResult(snquery)
    if(dim(cptcodes)[1] == 0){
        return (0)
    }

    #restrict this to constrain by Rx1 and Rx2 inputs
    h1 <- which(cpt$Cpt %in% cptcodes[,1])
    y <- which((cpt$Rx2 %in% dxdf[2] | cpt$Rx1 %in% dxdf[2]) & (cpt$Rx1 %in% dxdf[3] | cpt$Rx2 %in% dxdf[3]))
    hits <- intersect(y, h1)

    sum.all.hits <<- sum(cpt[hits,]$Log.Odds.Ratio)
    miss <<- 1 / (length(y) - length(hits))
#   apply(cpt[y,], 1, function(cptdf) if (cptdf[4] %in% codes[,1]){ P.hit <- as.numeric(cptdf[6]) / sum.of.hits; return (P.hit)} else { return (-m)}, c(codes=cptcodes, sum.of.hits=sum.all.hits, m=miss))
    apply(cpt[y,], 1, calc.enrichment)

}
4

1 に答える 1

1

SQLクエリが希望するものを返しますか?Numeric(0)は、空の結果セットを取得することを提案します。さらに、@ Prasad Chalasaniが指摘しているように、より正確な問題の説明を投稿してみてください。上記から、あなたの目的が何であるかわかりません。

于 2011-03-25T09:18:46.177 に答える