Неожиданная ошибка знака при создании списка - PullRequest
2 голосов
/ 21 января 2020

Я пытаюсь создать список цветов для указанных c уровней двух факторов. Параметры следующие:

> df.coldata
        Condition  Tank
R235      Control    T6
R236  LowExposure    T6
R239 HighExposure    T6
R241      Control    T8
R242  LowExposure    T8
R245 HighExposure    T8
R247      Control T14_3
R248  LowExposure T14_3
R250 HighExposure T14_3

Поскольку я не хочу вручную вводить номера резервуаров или условия, я пытался создать список, используя присвоенные переменные, например:

### Specify colors ####
Tanks <- levels(df.coldata$Tank)
Conditions <- levels(df.coldata$Condition)

ann_colors <- list(
  Condition = c(Conditions[1]="lightskyblue", # This doenst work ... BUGS here!!!
                Conditions[3]="royalblue1",
                Conditions[2]="navyblue"),
  Tank = c(Tanks[1]="gray90",
           Tanks[2]="gray65",
           Tanks[3]="gray40")
)

Но это создает ошибку, сообщающую мне:

Error: unexpected '=' in:
"ann_colors <- list(
  Condition = c(Conditions[1]="

Когда я запускаю код с:

ann_colors <- list(
  Condition = c(Control="lightskyblue",
                LowExposure="royalblue1",
                HighExposure="navyblue"),
  Tank = c(T14_3="gray90",
           T6="gray65",
           T8="gray40")
)

, он работает как шарм. Что я делаю неправильно? Я что-то упустил?

1 Ответ

5 голосов
/ 21 января 2020

Вместо этого используйте setNames :

ann_colors <- list(
  Condition = setNames(c("lightskyblue", "royalblue1", "navyblue"), Conditions),
  Tank = setNames(c("gray90", "gray65", "gray40"), Tanks)
  )

Причина, по которой ваш код ошибки состоит в том, что мы пытаемся присвоить новое значение Условия / Танки в пределах c(). Ниже будет работать, и заменит 1-е значение от Условия до "lightskyblue", но это не , что мы хотим:

Conditions[1] = "lightskyblue"
Conditions
# [1] "lightskyblue" "HighExposure" "LowExposure" 

И завертывая его в c() выдает ошибку:

c(Conditions[1] = "lightskyblue")
# Error: unexpected '=' in "c(Conditions[1] ="
...