ここに私がやりたいことの要点があります:
2 つのデータ フレームがあります:
x (ID は一意です)
id timestamp
282462839 2012-12-05 10:55:00
282462992 2012-12-05 12:08:00
282462740 2012-12-05 12:13:00
282462999 2012-12-05 12:48:00
y (ID は一意ではありません)
id value1 value2
282462839 300 100
282462839 300 200
282462839 400 300
282462999 500 400
282462999 300 150
また、何かを計算し、pvalue と他の value1s に応じて value2 値の 1 つを返す関数 myfunc(id,pvalue) もあります (単なる pvalue==value1 よりも複雑です)。
対応する計算された myfunc(id,pvalue) を含む x の 3 番目の列を作成したいと思います。ここで、pvalue は定数 (20 など) の整数です。
本質的に、私はこれをしたい:
x$t20 <- myfunc(x$id,20)
私はこのように lappy と sapply を使ってみました:
x$t20 <- sapply(as.vector(x$id),myfunc,pvalue=20)
as.vector を使用せずに lapply を使用してみましたが、このエラーが発生し続けました。
Error in .pointsToMatrix(p2) : Wrong length for a vector, should be 2
$t20 で $id をレプリケートするだけの平均を指定すると機能します。
どうすればいいですか?
編集 1: myfunc のスケルトンは次のとおりです。
myfunc <- function(xid,pvalue) {
result <- subset(y,id==xid)
retVal <- -1
if(nrow(result) < 12){
return(NaN)
}
for(i in (1:nrow(result))){
#code to process result
}
return(retVal)
}