Изменить значения data.frame - PullRequest
1 голос
/ 30 декабря 2010

Фон

Различают значения модели и прогнозные значения.

Задача

Рассмотрим следующий код:

library( 'gam' )

slope = 0.55
amplitude = 0.22
frequency = 3
noise = 0.75
x <- 1:200
y <- (slope * x / 100) + (amplitude * sin( frequency * x / 100 ))
ynoise <- y + (noise * runif( length( x ) ))

gam.object <- gam( ynoise ~ s( x ) )
p <- predict( gam.object, data.frame( x = 1:210 ) )

df <- data.frame( value=p, model='y' )

Вопрос

Что такое синтаксис R, чтобы установить для некоторых model строк кадра данных (df) значение 'n'?:

df[201:210,2] <- 'n'

Не работает и не работает ни один из вариантов Iпытался.

Связано

http://stat.ethz.ch/R-manual/R-patched/library/base/html/Extract.data.frame.html

Спасибо!

Ответы [ 2 ]

3 голосов
/ 30 декабря 2010

Когда вы создаете фрейм данных, задайте тип переменной для модели вместо символа по умолчанию, который является фактором.Это можно сделать при создании фрейма данных.

df <- data.frame( value=p, model='y',  stringsAsFactors=FALSE)

Затем вы можете присвоить любое значение символа переменной модели в фрейме данных.

R> df[201:210,2] <- 'n'
R> table(df[,2])
  n   y 
 10 200 
1 голос
/ 30 декабря 2010

Столбец представляет собой фактор:

R> sapply(df, class)
    value     model 
"numeric"  "factor" 
R> 

и имеет только один уровень:

R> table(df[,2])

  y 
200 

Возможно, вам придется изменить его уровень, чтобы учесть 'n'.

Редактировать: Пересмотреть это сейчас.Ваша модель gam() не использует этот второй столбец, поэтому что плохого в простом выполнении

R> predict(gam.object, data.frame(x=201:210))
    1     2     3     4     5     6     7     8     9    10 
1.370 1.379 1.388 1.397 1.406 1.415 1.424 1.433 1.442 1.450 
R> 

Другими словами, вам не нужны ни y, ни n, но, возможно, я что-то неправильно понимаюВот.Если да, не могли бы вы изменить свой вопрос и сделать его более понятным?

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