ES6 предоставляет метод Array.from()
, который создает новый экземпляр Array из объекта, подобного массиву или итерации.
let boxes = document.getElementsByClassName('box');
Array.from(boxes).forEach(v => v.style.background = 'green');
console.log(Array.from(boxes));
.box {
width: 50px;
height: 50px;
margin: 5px;
background: blue;
display: inline-block;
}
Как вы можете видеть внутри фрагмента кода, после использования функции Array.from()
вы можете манипулировать каждым элементом.
Это же решение с использованием jQuery
.
$('.box').css({'background':'green'});
.box {
width: 50px;
height: 50px;
margin: 5px;
background: blue;
display: inline-block;
}
Если вы хотите избежать изменения ваших данных, что не всегда просто в этом формате, вы можете использовать функции _at
в dplyr
. Ключевая вещь, которую нужно знать о mutate_at
, что, на мой взгляд, не слишком очевидно, - это то, что вы можете использовать его для создания новых столбцов с согласованным стилем именования. Таким образом, мы можем сделать:
Используйте mutate_at
, чтобы усечь столбцы pa
, если у женщин было более 7 детей. Это в основном означает: сделать эту функцию, которая заменяет значения больше 7 на 7 в каждом столбце, который начинается с «pa». Синтаксис ~
представляет собой компактный способ описания временной функции в purrr
и dplyr
.
Используйте mutate_at
снова, но на этот раз с функцией в качестве именованного элемента списка и с функцией, которая создает функцию с правильными уровнями и метками. Имя будет добавлено к исходным именам столбцов с разделителем подчеркивания. Обратите внимание, что мы можем использовать str_c
, чтобы не вводить каждый уровень вручную.
Мы хотим, чтобы столбцы читали ppa
вместо этого суффикса, поэтому мы можем использовать rename_at
, чтобы переименовать их все. Сначала мы удалим суффикс, а затем добавим p
в начало.
П.С. В конечном итоге вам может оказаться легче «привести в порядок» ваши данные, чтобы каждая строка представляла собой год женщины, а не женщину.
library(tidyverse)
pa2010 <- c(0, 0, 2, 5, 3, 6, 8, 2, 1, 1)
pa2009 <- c(0, 0, 2, 4, 3, 6, 8 ,2, 0, 0)
pa2008 <- c(0, 0, 1, 4, 3, 5, 8, 1, 0, 0)
Parity <- data.frame(pa2010, pa2009, pa2008)
Parity %>%
mutate_at(
.vars = vars(starts_with("pa")),
.funs = ~ if_else(. >= 7, 7, .)
) %>%
mutate_at(
.vars = vars(starts_with("pa")),
.funs = list(
parity = ~ . %>%
factor(levels = 0:7, labels = str_c("Parity ", 0:7)) %>%
fct_recode("Parity 7+" = "Parity 7")
)
) %>%
rename_at(
.vars = vars(ends_with("_parity")),
.funs = . %>%
str_remove("_parity") %>%
str_c("p", .)
)
#> pa2010 pa2009 pa2008 ppa2010 ppa2009 ppa2008
#> 1 0 0 0 Parity 0 Parity 0 Parity 0
#> 2 0 0 0 Parity 0 Parity 0 Parity 0
#> 3 2 2 1 Parity 2 Parity 2 Parity 1
#> 4 5 4 4 Parity 5 Parity 4 Parity 4
#> 5 3 3 3 Parity 3 Parity 3 Parity 3
#> 6 6 6 5 Parity 6 Parity 6 Parity 5
#> 7 7 7 7 Parity 7+ Parity 7+ Parity 7+
#> 8 2 2 1 Parity 2 Parity 2 Parity 1
#> 9 1 0 0 Parity 1 Parity 0 Parity 0
#> 10 1 0 0 Parity 1 Parity 0 Parity 0
Создано в 2019-03-22 с помощью пакета представитель (v0.2.1) sup>