Я хочу применить diff к столбцу фрейма данных, получая к нему доступ по его имени.Я делаю следующее:
abscissa <- "distance"
data.op[, abscissa]
Я получаю этот вывод
# A tibble: 15 x 1
distance
<dbl>
1 0.0426
2 0.0409
3 0.0412
4 0.0406
5 0.0406
6 0.0407
7 0.0402
8 0.0403
9 0.103
10 0.0402
11 0.0395
12 0.0407
13 0.0406
14 0.0405
15 0.0404
Затем я просто пытаюсь:
diff(data.op[, abscissa])
Но вывод:
# A tibble: 15 x 0
Я также пытался data.op[, abscissa] %>% diff
и data.op %>% select(abscissa) %>% diff
с тем же результатом нулевого столбца.
Однако, если я делаю
diff(as.data.frame(data.op)[, abscissa])
Это работает:
[1] -0.00169560 0.00024120 -0.00061200 0.00000000 0.00013320 -0.00045360 0.00003240 0.06299047 -0.06306967 -0.00071640 0.00120960 -0.00007920
[13] -0.00010440 -0.00005400
Когда я набираю str(data.op)
, я получаю:
Classes ‘grouped_df’, ‘tbl_df’, ‘tbl’ and 'data.frame': 15 obs. of 28 variables:
...
Чего я не понимаю, так это:
- Почему мой фрейм данных является тибблом? Хорошо, я установил tidyverse, но никогда раньше не использовал его в этом фрейме данных.
Редактировать: Не верно, я использовал функцию mapvalues()
чтобы создать фрейм данных, так что, я думаю, именно поэтому это тиббл, а не простой фрейм данных.
Мой data.op - это также фрейм данных,так почему же diff(data.op[, abscissa])
не работает?
Почему data.op[, abscissa] %>% diff
и data.op %>% select(abscissa) %>% diff
тоже не работают?
Есть ли у менядействительно нужно преобразовать его во фрейм данных, чтобы сделать простой diff?Это не помогает читабельности ...
Извините, я не могу привести более воспроизводимый пример.Я попытался с mtcars, и все работает, как ожидалось (но mtcars это фрейм данных, а не tibble).В какой-то момент мой фрейм данных data.op был преобразован в тиббл, но я понятия не имею, почему.