Изменение порядка строк / столбцов данных не работает, если установлено в функции - PullRequest
0 голосов
/ 03 мая 2019

Я хочу создать функцию, которая переупорядочивает строки и столбцы фрейма данных.Однако это не сработает, но если я попытаюсь изменить порядок данных вручную, все будет в порядке, и поэтому я должен иметь представление о том, как изменить порядок.

Вот моя функция:

CorrOrder <- function (df, new_df) {

  new_order = c(19:24, 7:12, 1:6, 13:18)

  new_df <- df[new_order, new_order]
}

#This does absolutely nothing and doesn't return an error

CorrOrder(AllData[["DataUnsorted"]][["DataFrameZXWY"]],
           AllData[["DataFrameWXYZ"]])

Это работает просто отлично:

AllData[["DataFrameWXYZ"]] <- AllData[["DataUnsorted"]][["DataFrameZXWY"]][c(19:24, 7:12, 1:6, 13:18), c(19:24, 7:12, 1:6, 13:18)]

Это создаст пример данных:

data.frame(replicate(24,sample(0:1,24,rep=TRUE)))

Ответы [ 2 ]

1 голос
/ 03 мая 2019

Ваша функция ничего не возвращает.Например, это также ничего не дает:

library(tidyverse)
df <- tibble(a = c(1, 2, 3))
test_function <- function(df) {
  df_new <- 
    df %>% 
    mutate(a = a + 2)
}
test_function(df)

Извлеките новое имя переменной и стрелку, и ваш код может работать:

test_function <- function(df) {
  df %>% 
    mutate(a = a + 2)
}

Или:

test_function <- function(df) {
  df_new <- 
    df %>% 
    mutate(a = a + 2)
  return(df_new)
}
1 голос
/ 03 мая 2019

Я думаю, что две вещи идут не так, как надо:

  • new_df не должно быть входным значением для вашей функции, а скорее выходным значением.
  • Ваша функция не имеетвыходное значение.

Попробуйте это:

CorrOrder <- function(df) {
  new_order = c(19:24, 7:12, 1:6, 13:18)
  new_df <- df[new_order, new_order]
  return(new_df)
}

CorrOrder(AllData[["DataUnsorted"]][["DataFrameZXWY"]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...