2015-07-27 2 views
1

Я видел это сообщение (How to access the last value in a vector?) показано, как использовать функцию хвоста. Когда я применяю хвост к коэффициенту, он возвращает все уровни фактора, включая последний фактор. Пример:Функция хвоста по коэффициенту в R

x = rep(1:4, 6) 
y = rnorm(4*length(x), 0, 0.1) 

d = data.frame(ERF=x, y) 

d$ERF = factor(d$ERF) 

a <- tail(d$ERF, n=1) 

> a 
[1] 4 
Levels: 1 2 3 4 

Я просто хочу сохранить последний коэффициент как переменную (a). Я могу видеть, что [1] является 4, но:

> a[1] 
[1] 4 
Levels: 1 2 3 4 

Я смотрел на ?tail, но не могу показаться, чтобы выяснить это. Я знаю, что это должно быть просто, мне просто нужно подтолкнуть в правильном направлении. Спасибо

+4

использование '' droplevels' т.е. droplevels (а) 'или вызов 'factor', т. е.' factor (a) ', чтобы получить только уровни, присутствующие в' a', и удалить неиспользуемые уровни. – akrun

+0

спасибо, поэтому теперь я могу сохранить его как переменную. Кажется, вы можете выбрать свой комментарий в качестве ответа. – Pete900

+0

Нет проблем. Это потому, что я не опубликовал его в качестве ответа. – akrun

ответ

4

tail, как и любая функция индексации, возвращает элементы. Однако элемент фактора все еще является фактором, поэтому, когда вы печатаете, все уровни факторов печатаются.

Тем не менее, вы можете использовать это значение как любое другое значение. Если вы хотите использовать это значение, преобразуйте его в строку символов через as.character.

Если вы хотите, чтобы избавиться от всех неиспользуемых уровней факторов, использовать droplevels:

f = factor(letters) 

tail(f) 
# [1] u v w x y z 
# Levels: a b c d e f g h i j k l m n o p q r s t u v w x y z 

as.character(tail(f)) 
# [1] "u" "v" "w" "x" "y" "z" 

droplevels(tail(f)) 
# [1] u v w x y z 
# Levels: u v w x y z 
+0

Просто небольшой комментарий, уровни «factor» не только печатаются, но и фактически хранятся там как «атрибуты (tail (f))». –

2

Вы можете просто использовать factor(a)

> a 
[1] 4 
Levels: 1 2 3 4 
> factor(a) 
[1] 4 
Levels: 4 
Смежные вопросы