#r #dataframe
#r #фрейм данных
Вопрос:
Я использую цикл 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:
Это поведение по умолчанию при использовании 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