Принятый ответ Бобинса - это короткое портативное решение. Если вам нужно не только добавлять SVG, но и манипулировать им, вы можете попробовать библиотеку JavaScript «Pablo» (я ее написал). Он будет хорошо знаком с пользователями jQuery.
Пример вашего кода выглядел бы так:
$(document).ready(function(){
Pablo("svg").append(' ');
});
Вы также можете создавать элементы SVG «на лету» без указания разметки:
var circle = Pablo.circle({
cx:100,
cy:50,
r:40
}).appendTo('svg');
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
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
Один из методов - преобразовать ваш список в массив, а затем применить функцию среднего к третьему измерению массива:
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)