Рассчитать среднее по элементам в списке

Принятый ответ Бобинса - это короткое портативное решение. Если вам нужно не только добавлять SVG, но и манипулировать им, вы можете попробовать библиотеку JavaScript «Pablo» (я ее написал). Он будет хорошо знаком с пользователями jQuery.

Пример вашего кода выглядел бы так:

$(document).ready(function(){
    Pablo("svg").append('');
});

Вы также можете создавать элементы SVG «на лету» без указания разметки:

var circle = Pablo.circle({
    cx:100,
    cy:50,
    r:40
}).appendTo('svg');

2
задан markus 9 April 2019 в 21:41
поделиться

3 ответа

A purrr опция

library(purrr)
map_df(transpose(mylist), ~rowMeans(as.data.frame(.x), na.rm = TRUE))
 # A tibble: 2 x 2
#      x     y
#  <dbl> <dbl>
#1     2   3.5
#2     3   4  
0
ответ дан markus 9 April 2019 в 21:41
поделиться
Reduce(function(x, y) x + replace(y, is.na(y), 0), mylist)/
    Reduce(`+`, lapply(mylist, function(x) !is.na(x)))
#  x   y
#1 2 3.5
#2 3 4.0

ИЛИ

nm = c("x", "y")  # could do `nm = names(mylist[[1]])`
sapply(nm, function(NM)
    rowMeans(do.call(cbind, lapply(mylist, function(x) x[NM])), na.rm = TRUE))
#     x   y
#[1,] 2 3.5
#[2,] 3 4.0
0
ответ дан d.b 9 April 2019 в 21:41
поделиться

Один из методов - преобразовать ваш список в массив, а затем применить функцию среднего к третьему измерению массива:

my_array <- array(unlist(mylist), dim=c(2,2,3))
apply(my_array, c(1,2), mean, na.rm=T)

#      [,1] [,2]
# [1,]    2  3.5
# [2,]    3  4.0

Если вы хотите сделать все это за один раз, без жесткого кодирования размеров вы можете сделать:

apply(array(unlist(mylist), dim=c(nrow(mylist[[1]]),ncol(mylist[[1]]),length(mylist))), c(1,2), mean, na.rm=T)
0
ответ дан Dan Y 9 April 2019 в 21:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: