отобразить и изменить список tbl_df - PullRequest
1 голос
/ 19 октября 2019

Я пытаюсь отобразить список фреймов данных в R, но не понимаю, как это правильно. Я пытаюсь:

lst %>%
  map(~mutate(., NewColumn1 = .x$value*2,))

С ошибкой:

Ошибка: столбец NewColumn1 должен иметь длину 2 (количество строк) или один, а не 0. Дополнительно: Предупреждающее сообщение: Неизвестный или неинициализированный столбец: «значение».

Данные выглядят следующим образом:

[[9]]
# A tibble: 2 x 4
  time       ID    Value   out
  <date>     <chr> <dbl> <dbl>
1 2016-12-23 CAT1   790.     0
2 2016-12-27 CAT1   792.     1

[[10]]
# A tibble: 2 x 4
  time       ID    Value   out
  <date>     <chr> <dbl> <dbl>
1 2016-12-28 CAT1   785.     0
2 2016-12-29 CAT1   783.     0

ДАННЫЕ:

Data <- list(structure(list(time = structure(c(17136, 17137), class = "Date"), 
    ID = c("CAT1", "CAT1"), Value = c(747.919983, 750.5), out = c(0, 
    1)), row.names = c(NA, -2L), class = c("tbl_df", "tbl", "data.frame"
)), structure(list(time = structure(c(17140, 17141), class = "Date"), 
    ID = c("CAT1", "CAT1"), Value = c(762.52002, 759.109985), 
    out = c(1, 0)), row.names = c(NA, -2L), class = c("tbl_df", 
"tbl", "data.frame")), structure(list(time = structure(c(17142, 
17143), class = "Date"), ID = c("CAT1", "CAT1"), Value = c(771.190002, 
776.419983), out = c(1, 1)), row.names = c(NA, -2L), class = c("tbl_df", 
"tbl", "data.frame")), structure(list(time = structure(c(17144, 
17147), class = "Date"), ID = c("CAT1", "CAT1"), Value = c(789.289978, 
789.27002), out = c(1, 1)), row.names = c(NA, -2L), class = c("tbl_df", 
"tbl", "data.frame")), structure(list(time = structure(c(17148, 
17149), class = "Date"), ID = c("CAT1", "CAT1"), Value = c(796.099976, 
797.070007), out = c(1, 0)), row.names = c(NA, -2L), class = c("tbl_df", 
"tbl", "data.frame")), structure(list(time = structure(c(17150, 
17151), class = "Date"), ID = c("CAT1", "CAT1"), Value = c(797.849976, 
790.799988), out = c(1, 0)), row.names = c(NA, -2L), class = c("tbl_df", 
"tbl", "data.frame")), structure(list(time = structure(c(17154, 
17155), class = "Date"), ID = c("CAT1", "CAT1"), Value = c(794.200012, 
796.419983), out = c(1, 0)), row.names = c(NA, -2L), class = c("tbl_df", 
"tbl", "data.frame")), structure(list(time = structure(c(17156, 
17157), class = "Date"), ID = c("CAT1", "CAT1"), Value = c(794.559998, 
791.26001), out = c(0, 0)), row.names = c(NA, -2L), class = c("tbl_df", 
"tbl", "data.frame")), structure(list(time = structure(c(17158, 
17162), class = "Date"), ID = c("CAT1", "CAT1"), Value = c(789.909973, 
791.549988), out = c(0, 1)), row.names = c(NA, -2L), class = c("tbl_df", 
"tbl", "data.frame")), structure(list(time = structure(c(17163, 
17164), class = "Date"), ID = c("CAT1", "CAT1"), Value = c(785.049988, 
782.789978), out = c(0, 0)), row.names = c(NA, -2L), class = c("tbl_df", 
"tbl", "data.frame")))

1 Ответ

1 голос
/ 19 октября 2019

Посмотрите на сообщение об ошибке Unknown or uninitialised column: 'value'., затем посмотрите на свой код map(Data, ~mutate(., NewColumn1 = .x$value*2,)). Имя столбца Value, а не value (регистр важен!).

Ваш синтаксис также может быть немного очищен. Попробуйте map(Data, ~mutate(., NewColumn1 = Value*2)). Технически, я думаю, . и .x относятся к одному и тому же, но лучше быть последовательным. В mutate вам также не нужно устанавливать подкадр данных, то есть достаточно mutate(df, new_col = old_col), вам не нужно mutate(df, new_col = .$old_col).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...