区分模型值和预测值。
请考虑以下代码:
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' )
将数据框(model
)的某些df
行设置为'n'
的R语法是什么?:
df[201:210,2] <- 'n'
不起作用,也没有尝试过任何变化。
http://stat.ethz.ch/R-manual/R-patched/library/base/html/Extract.data.frame.html
谢谢!
答案 0 :(得分:3)
创建数据框时,请将模型的变量类型设置为字符而不是默认值,即因子。这可以在您创建数据框时完成。
df <- data.frame( value=p, model='y', stringsAsFactors=FALSE)
然后,您可以将任何字符值分配给数据框中的模型变量。
R> df[201:210,2] <- 'n'
R> table(df[,2])
n y
10 200
答案 1 :(得分:1)
该列是一个因素:
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
,但也许我在这里误解了一些东西。如果是这样,你能否修改你的问题并使其更清楚?