его закрытый ключ хранится в config.ini
# Tuple of [public key, WIF private key] (may specify multiple times) (eosio::producer_plugin)
private-key = ["EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV","5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"]
. Второе значение - это закрытый ключ.
Кроме того, я думаю, что вы можете использовать другую учетную запись для настройки своей блокчаин. EOSIO - это только тестовая учетная запись.
Итак, предположим, что вы можете использовать другого производителя блоков, если вы используете другое имя производителя и учетную запись с разными ключами в config.ini
. Проверьте это: https: // medium .com / coinmonks / test-4fbd38fdc4e8 глава 4
Вот решение с dplyr
:
library(dplyr)
df %>%
mutate(coords_x = 82 * ifelse(event_rinkside == "L", -1, 1),
coords_y = 0) %>%
rbind(df, .) %>%
arrange(event_index)
Как это работает:
На первом шаге mutate
используется для изменения неназначенного копия df
. Столбец coords_x
получает значение 82; значение умножается на -1, если event_rinkside == "L"
, и 1 в противном случае. Столбец coords_y
получает значение 0.
На следующем шаге неизмененный исходный кадр данных df
и текущая неназначенная и измененная его копия объединяются с rbind
. Здесь .
представляет результат шага mutate
выше. Результат rbind
имеет строки оригинальной версии над строками модифицированной версии.
На последнем шаге arrange
используется для сортировки строк по значениям event_index
. Таким образом, за каждой исходной строкой непосредственно следует соответствующая измененная строка.
Результат:
# A tibble: 114 x 4
event_index coords_x coords_y event_rinkside
<int> <dbl> <dbl> <chr>
1 1 80 -1 R
2 1 82 0 R
3 2 53 14 R
4 2 82 0 R
5 3 31 -30 R
6 3 82 0 R
7 4 -56 17 L
8 4 -82 0 L
9 5 -34 26 L
10 5 -82 0 L
# … with 104 more rows
Я не слишком знаком с r, мой алгоритм должен работать независимо от этого. Вы хотите сдвинуть строку до строки 2n-1. Я хотел бы создать второй массив и вручную разместить их в определенных индексах.
какой-то псевдокод для вас (я обычно пишу на python, так что мой псевдо-код показывает его)
reinsert(list):
array_out = [len(list)*2,len(list[0]) // initialize to the desired dimensions
array_out[0] = list[0] /// manually insert first row cause math
for n in range(0,len(list)):
array_out[2n-1] = list[n]
array_out[2n] = event_rinkside // make a function call or make an ifthen clause to do you logic
return(array_out)
вы можете вставить вновь созданные строки в цикл или добавить их после того, как факт, зная, что они все будут по четным индексам.
Моя попытка, которая уже очень похожа на другие ответы,
df <- df[rep(1:nrow(df), each = 2),] ## Create a duplicate row after each row
df[seq(2,nrow(df),2),] <- df[seq(2,nrow(df),2),] %>% mutate(coords_x = case_when(event_rinkside == "R" ~ 82,
event_rinkside == "L" ~ -82,
TRUE ~ coords_x),
coords_y = case_when(event_rinkside == "R" ~ 0,
event_rinkside == "L" ~ 0,
TRUE ~ coords_y)
)
Это похоже на ответ Свена, использующий case_when
для различения возможностей в пределах event_rinkside
:
new_df <- df %>% bind_rows(
df %>% mutate(
coords_x = case_when(
event_rinkside == 'R' ~ 82,
event_rinkside == 'L' ~ -82,
TRUE ~ coords_x
),
coords_y = case_when(
event_rinkside == 'R' ~ 0,
event_rinkside == 'L' ~ 0,
TRUE ~ coords_y
)
)
) %>% arrange(
event_index
)
Если вы знаете диапазоны ваших переменных, это может быть упрощено до if_else
с.