Название может сбивать с толку, но, думаю, у него есть простое решение.У меня есть собственная функция, и я хочу применить одну и ту же функцию к нескольким спискам, состоящим из двух столбцов.Но мне нужно делать разные вычисления для каждого столбца в отдельности.
В качестве примера mydata
это:
x1 x2 y1 y2 z1 z2
1 0.0 0.0 0.0 7.8 0.0 8.6
2 8.6 0.0 0.0 7.6 1.6 1.4
3 11.2 7.8 3.4 1.2 7.6 0.0
4 8.4 7.6 21.4 10.2 23.6 0.0
5 0.0 1.2 1.8 7.0 3.2 0.0
6 0.0 10.2 1.4 0.0 0.0 0.0
mydata<-structure(list(x1 = c(0, 8.6, 11.2, 8.4, 0, 0), x2 = c(0, 0,
7.8, 7.6, 1.2, 10.2), y1 = c(0, 0, 3.4, 21.4, 1.8, 1.4), y2 = c(7.8,
7.6, 1.2, 10.2, 7, 0), z1 = c(0, 1.6, 7.6, 23.6, 3.2, 0), z2 = c(8.6,
1.4, 0, 0, 0, 0)), .Names = c("x1", "x2", "y1", "y2", "z1", "z2"
), class = "data.frame", row.names = c(NA, -6L))
И myfun
функция:
myfun<- function(x) {
means<-sapply(list(x), function(ss) mean(ss, na.rm = T))
#my point: vars<-sapply(list(y), function(ss) var(ss, na.rm = T))
mean<-means[[1]]
#var<-vars[[1]]
#lists<-list(mean, var)
#names(lists) <- c("mean", "var")
#return(lists)
lists<-list(mean)
names(lists)<-c("mean")
return(lists)
}
Я использовал #
для деталей, которые будут добавлены позже в myfun
.
Когда я пытался
results<-lapply(mydata, myfun)
, я могу применить одну и ту же функцию и одинаковые вычисления к каждому столбцу.
Как видите, есть 2 столбца (x1-x2, y1-y2, z1-z2)
за каждые данные (x, y, z)
.
То, что я хочу:
1) Получение means
первых столбцов (x1, y1, z1)
2) Получение variances
вторых столбцов(x2, y2, z2)
3) И как выходной;Я хочу видеть результаты mean1
и var1
для всех данных в списках x
, y
и z
, таких как:
x-> mean1 (mean of x1)
var1 (var of x2)
y-> mean1 (mean of y1)
var1 (var of y2)
4) Делать все это в цикле с lapply
или sapply
или с любой полезной функцией.
Примечания:
1) Я не группировал x1 и x2 под x, y1 и y2 под y.Потому что, если можно найти решение для формы mydata
, это было бы более полезным для меня.Но если это необходимо, я могу сгруппировать их отдельно.
2) myfun
функция теперь ищет средства из 6 столбцов.Я указал дополнительные части, которые будут использоваться для расчета дисперсии вторых столбцов с #