Одна из самых коротких версий ES6 для реализации будет следующей:
state.List.forEach(listItem => finalArr.push([].concat([listItem.name], listItem.sub)));
Здесь мы перебираем массив List
и нажимаем на finalArr
новый массив, который мы генерируем путем слияния значений свойств объекта name
и sub
в один новый массив. И, наконец, у нас есть массив массивов (каждый дополнительный массив, созданный из отдельных элементов из state.List
). Вот рабочий пример:
const state = {
List: [
{
name: "josie",
sub: [
"ally",
"fred"
]
},
{
name: "edward",
sub: [
"ally",
"fred",
"goolly"
]
}
]
}
const finalArr = [];
state.List.forEach(listItem => finalArr.push([].concat([listItem.name], listItem.sub)));
console.log(finalArr);
Воспроизводимые данные
df <- as.data.frame(matrix(rnorm(400), 100, 4))
Гистограмма и квантиль
Вы получите гистограмму и квантиль одновременно по коду ниже , Я использую mapply()
вместо sapply()
, потому что я хочу, чтобы заголовки гистограмм соответствовали названию каждого столбца. Если у вас нет запроса, вы можете изменить его.
par(mfrow = c(1, 4))
quant <- mapply(function(value, name){
hist(value, main = paste0("Histogram of ", name), breaks = 20)
quantile(value, seq(0, 1, by = 0.1))
}, df, names(df), SIMPLIFY = T)
quant
# V1 V2 V3 V4
# 0% -2.44712416 -2.63463290 -3.08872658 -2.8410463
# 10% -0.88944226 -1.16264448 -1.24097984 -1.1701429
# 20% -0.71782990 -0.91843217 -0.75868358 -0.8962623
# 30% -0.51587838 -0.66932521 -0.52816811 -0.8046574
# ...
Обратите внимание, что вывод mapply()
является матрицей. Если вы хотите, чтобы это был фрейм данных, попробуйте:
as.data.frame(quant)
Если вы хотите, чтобы квантиль был строкой, попробуйте:
as.data.frame(t(quant))