我正在尝试编写一个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"
答案 0 :(得分:0)
也许你想......
newData$dprime <- dprimeFun(newData[,c("zH1", "zF1")])
但这非常难以辨别。