0

我不使用那么多函数,但是当我这样做时,我倾向于使用 anon 函数和某种形式的apply. 然而,我现在正在尝试编写一个适用于列表中项目的函数。

有两个列表,每个列表都有很多项目(我的意思是例如项目mylist1[1])。所有项目都是数据框。我想从中获取第一个数据帧mylist1和第一个数据帧,mylist2并在这些数据帧中的列上运行一堆函数。然后拿第二个mylist1项目和第二个mylist2项目等等......

下面是我习惯写的那种东西,但在这种情况下显然不适用于两个列表。谁能帮助我快速找出我应该如何使用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)

我也只是认为人们是否认为这样做会更好subsetz而不是split那样做?

4

1 回答 1

4

您正在准确描述mapply.

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

不幸的是,您的示例似乎不喜欢传递两个 data.frames(x, y 的第一个元素都是 data.frames,这x[1]似乎y[1]相互矛盾)。

于 2012-06-15T13:16:15.417 回答