Алгоритмы кластеризации с R

В случае if-case для платформы Windows i.e platform.processor () просто указывается описание или фамилия процессора, например. Intel64 Family 6 Model 60 Stepping 3.

Я использовал:

  if platform.system() == "Windows":
        family = platform.processor()
        name = subprocess.check_output(["wmic","cpu","get", "name"]).strip().split("\n")[1]
        return ' '.join([name, family])

, чтобы получить фактическую модель процессора, которая является тем же самым выходом, что и if-blocks для Darwin и Linux, например Intel (R) Core (TM) i7-4790K CPU @ 4.00GHz Intel64 Family 6 Model 60 Stepping 3, GenuineIntel

0
задан chippycentra 28 February 2019 в 23:00
поделиться

1 ответ

Вот подход, использующий dplyr и tidyr из метапакета tidyverse. Я подозреваю, что есть более простой способ сделать это в базе R ...

Сначала я определяю порядок столбцов, используя только «расположение», делая версию df1, которая объединяет все строки в каждом столбце и рассматривает все ненулевые элементы как 1. Сортировав это, мы получаем порядок, который хотим. Затем я беру df1 со столбцами в этом порядке.

library(tidyverse)
col_order <- data_frame(cols = names(df1),
                  concat = apply(df1, 2, paste0, collapse = "")) %>%
  mutate(concat_binary = concat %>% str_replace_all("[123456789]", "1")) %>%
  arrange(desc(concat_binary)) %>%
  pull(cols)

df1 %>% 
  select(col_order)

#  g1 g2 g5 g6 g7 g10 g3 g4 g11 g8 g9
#1  1  1  3  4  4   6  0  0   0  0  0
#2  0  0  0  0  0   0  2  2   8  0  0
#3  0  0  0  0  0   0  0  0   0  2  2
#4  0  0  0  0  0   0  0  0   0  2  2
#5  0  0  0  0  0   0  0  0   0  0  0
0
ответ дан Jon Spring 28 February 2019 в 23:00
поделиться
Другие вопросы по тегам:

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