函数作用于多个列表

use*_*296 0 r list sapply

我不使用那么多函数,但当我使用时,我倾向于使用匿名函数和某种形式的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)
Run Code Online (Sandbox Code Playgroud)

subset我还只是想人们是否认为这样做会zsplit这样做更好?

Ari*_*man 5

您正在准确描述 的用例mapply

result <- mapply(myfunction,x=mylist,y=mylist2)
Run Code Online (Sandbox Code Playgroud)

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