我不使用那么多函数,但是当我这样做时,我倾向于使用 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)
我也只是认为人们是否认为这样做会更好subset
,z
而不是split
那样做?