R:应用dprime函数 - apply()错误'dim(X)必须具有正长度'

时间:2014-01-29 01:38:52

标签: r apply

我正在尝试编写一个dprime函数,其中我从命中z分数中减去FA以获得每个参与者的dprime值。参与者是行,z分数是列。我的数据集(newData)是18x16,但我想忽略前8列。我想重复每个条件的dprime计算,并使用输出创建一个新的18x4数据集(newData2)。

# Function to apply
dprimeFun <- function(twoColumns){
  # Give the function two columns at a time
  zH <- twoColumns[ 1 ]
  zF <- twoColumns[ 2 ]
  dprime <- zH - zF 
  return(dprime)
}

# Apply the function
newData2 <- cbind(
  # Condition 1 dprimes
  apply(
    newData[ c( "zH1","zF1" ) ], MARGIN=1, FUN=dprimeFun
  ),
  # Repeat for each condition
)

当我运行时,我收到以下错误:

Error in apply(newData[c("zH1", "zF1")], MARGIN = 1, FUN = dprimeFun) : 
  dim(X) must have a positive length

我发现this question有人有同样的错误信息,不过我认为他们的解决方案(只是将函数直接应用于数据子集)对我不起作用,因为我必须这样做72次

我还阅读了R FAQ 'Why do matrices lose dimensions?',但我不明白它是如何应用于我的18x16数据集的。

我是R newb所以非常感谢帮助。

编辑:

# newData structure
> str(newData)
 num [1:18, 1:16] 0.833 0.833 0.833 0.833 0.833 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:16] "H1" "F1" "H2" "F2" ...

# newData column names
> colnames(newData)
 [1] "H1"  "F1"  "H2"  "F2"  "H3"  "F3"  "H4"  "F4"  "zH1" "zF1" "zH2" "zF2" "zH3" "zF3"
[15] "zH4" "zF4"

1 个答案:

答案 0 :(得分:0)

也许你想......

newData$dprime <- dprimeFun(newData[,c("zH1", "zF1")])

但这非常难以辨别。