У меня есть скрипт, который требует как библиотек reshape
, так и reshape2
. Я знаю, что это плохая практика, но я думаю, что
plyr
(или другая библиотека, которую я использую)
Vennerable
загружается reshape
, и я лично использовал reshape2
во многих местах.Перетаскивание маски пакета, предотвращающее расплавление от имен столбцов
Проблема заключается в том, что маскировка reshape2
по reshape
вызывает проблемы для функции melt
# Example data frame
df <- data.frame(id=c(1:5), a=c(rnorm(5)), b=c(rnorm(5)))
# With just reshape2, variable and value columns are labelled correctly
library(reshape2)
melt(df, measure.vars=c("a", "b"), variable.name="type", value.name="distance")
id type distance
1 1 a -2.0233666
2 2 a 0.4625188
3 3 a -2.8688127
4 4 a 0.8151644
5 5 a -0.4574464
6 1 b 1.3197784
7 2 b 1.6213146
8 3 b 1.3508913
9 4 b -1.6483839
10 5 b -1.1342157
# But my script also has reshape loaded
library(reshape)
Loading required package: plyr
Attaching package: ‘reshape’
The following object(s) are masked from ‘package:plyr’:
rename, round_any
The following object(s) are masked from ‘package:reshape2’:
colsplit, melt, recast
# When calling melt in this environment, variable and value columns stick to
# their default names
melt(df, measure.vars=c("a", "b"), variable.name="type", value.name="distance")
id variable value
1 1 a -2.0233666
2 2 a 0.4625188
3 3 a -2.8688127
4 4 a 0.8151644
5 5 a -0.4574464
6 1 b 1.3197784
7 2 b 1.6213146
8 3 b 1.3508913
9 4 b -1.6483839
10 5 b -1.1342157
Я думал, что я мог бы конкретно назвать melt
из reshape2
с помощью reshape2::melt
, но я все еще получаю ту же проблему.
Есть ли простой способ обойти это? Если нет, мне придется вручную перемаркировать имена столбцов сразу после каждого вызова расплава.
Я не думаю, что новая версия '' plyr' использует reshape' больше. Это единственная причина, по которой вы импортировали 'reshape'? – Peyton
Я не импортирую его лично, но я думаю, что другая библиотека есть, и я не могу решить, какой. Я подозревал, что это было plyr из-за заказа на выход. – MattLBeck
Проверьте каждый из пакетов следующим образом: 'installed.packages() [installed.packages() [, 1] ==" ggplot2 ",]' – Roland