0

関数を ddply 呼び出しに書き込む際に問題が発生しています。基本的な DF は次のとおりです。

library(plyr)

Time <- c(1,2,3,4,5,6,7,8,9,10)
X <- c(1,2,-3,4,-7,2,-4,9,7,-5)
Y <- c(2,-3,-4,4,4,3,2,-9,9,10)
T <- c(5,4,3,2,1,9,8,7,6,5)
DF <- data.frame(Time,X,Y,T)

私には2つの異なる機能があります。2列のステートメントの結果に応じて、Tから数値を減算するように見えるもの

VD<-function(X,Y,T){
    if(X > 0 & Y < 0) {9-T}
    if(X < 0 & Y < 0) {5-T}
    if(X > 0 & Y > 0) {9-T}
    if(X < 0 & Y > 0) {5-T}
}

数値が負か正かを調べるだけの秒 (負の数の場合は 9 から x を引き、正の数の場合は何もしません)

VD2<-function(X){
    if(X<0) {9-X}
    if(X>0) {X}
}

うまくいくと思ったことを書きました

ddply(DF,'Time',summarize,Result=VD(X,Y,T))

ddply(DF,'Time',summarize,Result2=VD2(X))

しかし、両方でエラーが発生し、理由がわかりません

4

3 に答える 3

2

関数で結果を返す必要があると思います

VD<-function(X,Y,T){
if(X > 0 & Y < 0) {return(9-T)}
if(X < 0 & Y < 0) {return(5-T)}
if(X > 0 & Y > 0) {return(9-T)}
if(X < 0 & Y > 0) {return(5-T)}
}
于 2013-09-13T19:19:50.040 に答える