R: индекс строки драфрейма по индексу, а имя столбца дает все уровни - PullRequest
0 голосов
/ 23 апреля 2019

Я использую цикл foor для получения значений ячеек кадра данных

  for(k in 1:nrow(myDF)){
    for(h in names(myDF[k,])){
           a<-myDF[k,][["colname"]]
           print(a)
    }   
  }

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

Результат

[1] 1800-01-01
375 Levels: 1/10/2018 1/11/2018 1/12/2018 1/13/2018 1/15/2018 1/16/2018 1/16/2019 1/17/2018 1/17/2019 1/18/2018 1/19/2018 1/20/2018 1/21/2019 1/22/2018 1/22/2019 ... 9/9/2018
[1] 1800-01-01
375 Levels: 1/10/2018 1/11/2018 1/12/2018 1/13/2018 1/15/2018 1/16/2018 1/16/2019 1/17/2018 1/17/2019 1/18/2018 1/19/2018 1/20/2018 1/21/2019 1/22/2018 1/22/2019 ... 9/9/2018
[1] 1800-01-01
375 Levels: 1/10/2018 1/11/2018 1/12/2018 1/13/2018 1/15/2018 1/16/2018 1/16/2019 1/17/2018 1/17/2019 1/18/2018 1/19/2018 1/20/2018 1/21/2019 1/22/2018 1/22/2019 ... 9/9/2018
[1] 1800-01-01
375 Levels: 1/10/2018 1/11/2018 1/12/2018 1/13/2018 1/15/2018 1/16/2018 1/16/2019 1/17/2018 1/17/2019 1/18/2018 1/19/2018 1/20/2018 1/21/2019 1/22/2018 1/22/2019 ... 9/9/2018
[1] 1800-01-01
375 Levels: 1/10/2018 1/11/2018 1/12/2018 1/13/2018 1/15/2018 1/16/2018 1/16/2019 1/17/2018 1/17/2019 1/18/2018 1/19/2018 1/20/2018 1/21/2019 1/22/2018 1/22/2019 ... 9/9/2018

1 Ответ

2 голосов
/ 23 апреля 2019

Это поведение по умолчанию при использовании print для факторов.используйте max.level = 0, чтобы удалить его из печати. ​​

z <- data.frame(a = as.factor(c(4,3,2,1)))

print(z[1,])

#output
[1] 4
Levels: 1 2 3 4

print(z[1,], max.levels = 0)

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