Работать над более чем одним списком

Я не использую так много функций, но когда я делаю это, я склонен использовать функцию anon и некоторую форму apply, Однако сейчас я пытаюсь написать функцию, которая работает над элементами в списке.

Есть два списка, каждый из которых имеет много элементов (под элементом я имею в виду, например, mylist1[1]). Все элементы являются датафреймами. Я хочу взять первый кадр данных из mylist1 и первый кадр данных из mylist2 и запустить несколько функций над столбцами в этих информационных фреймах. Затем возьмите 2-й mylist1 пункт и 2-й 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 и сделать функцию таким образом?

1 ответ

Решение

Вы точно описываете вариант использования mapply,

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

К сожалению, вашему примеру, похоже, не нравится, когда передаются два data.frames (x, первые элементы y - оба data.frames, которые x[1] а также y[1] казалось бы противоречит).

Другие вопросы по тегам