【问题标题】:Change data.frame values更改 data.frame 值
【发布时间】:2010-12-30 01:10:00
【问题描述】:

背景

区分模型值和预测值。

问题

考虑以下代码:

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' )

问题

将数据框 (df) 的某些 model 行设置为 'n' 的 R 语法是什么?:

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

不起作用,我尝试过的任何变体也不起作用。

相关

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

谢谢!

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    创建数据框时,将模型的变量类型设置为字符而不是默认值,即因子。这可以在您制作数据框时完成。

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

    然后你可以将任意字符值赋给数据框中的模型变量。

    R> df[201:210,2] <- 'n'
    R> table(df[,2])
      n   y 
     10 200 
    

    【讨论】:

      【解决方案2】:

      列是一个因素:

      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,但也许我在这里误解了一些东西。如果是这样,您能否修改您的问题并使其更清楚?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-17
        • 2018-01-07
        相关资源
        最近更新 更多