0

私はそれほど多くの関数を使用しませんが、使用するときは、anon関数と何らかの形式のを使用する傾向がありapplyます。ただし、現在、リスト内のアイテムを処理する関数を作成しようとしています。

それぞれが多くのアイテムを持っている2つのリストがあります(アイテムによって私は例えばmylist1[1])。すべてのアイテムはデータフレームです。mylist1から最初のデータフレームを取得し、から最初のデータフレームを取得mylist2して、それらのデータフレームの列に対して一連の関数を実行したいと思います。次に、2番目mylist1のアイテムと2番目のアイテムを取りmylist2ます...

以下は私が書くことに慣れている種類のものですが、この場合、2つのリストでは明らかに機能しません。sapply主な問題を引き起こしていると思われる方法以外の方法を使用して、これにどのようにアプローチすべきかをすばやく理解する方法を誰かが手伝ってくれますか?

a <- c(1:10)
b <- c(1:10)
z <- c(rep("x", 5), rep("y", 5))
df <- data.frame(cbind(a, b, z))
mylist1 <- split(df, z)
mylist2 <- split(df, z)

myfunction <- function(x, y) 
{

    a <- as.data.frame(x[1])
    b <- as.data.frame(y[1])
    meana <- mean(a[1])
    meanb <- mean(b[1])
    model <- lm(a[1]~b[1])
    return(c(model$coefficients[2], meana, meanb))
}

result <- sapply(mylist1, mylist2, myfunction)

subset私はまた、人々はそのように機能するzよりも、それを行う方が良いと思うのだろうかと思いましたsplitか?

4

1 に答える 1

4

のユースケースを正確に説明していますmapply

result <- mapply(myfunction,x=mylist,y=mylist2)

残念ながら、あなたの例では2つのdata.framesが渡されることを楽しんでいないようです(x、yの最初の要素は両方ともdata.framesでありx[1]y[1]矛盾しているように見えます)。

于 2012-06-15T13:16:15.417 に答える