0

ここに私がやりたいことの要点があります:

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)
}
4

1 に答える 1