在“lm”中使用“subset”时,“变量长度不同”错误

时间:2017-05-20 20:22:55

标签: r regression subset linear-regression lm

第一天使用R,很抱歉,如果这个问题很明显。

我正在尝试使用因子变量和数值变量进行回归。

  • Diet是一个因子变量,从1-10开始。我制作了一个新的因子变量Diet.Factor
  • Source是另一个可以是A或B的因子变量。
  • 我希望在Weight时基于Diet.FactorSource==A运行线性回归。

现在,

lm(Weight~Diet.Factor,data=labdata)

工作正常,但

lm(Weight~Diet.Factor,data=subset(labdata,Source=="A"))

给出

Error in model.frame.default(formula = Weight ~ Diet.Factor,  
  :variable lengths differ (found for 'Diet.Factor')

1 个答案:

答案 0 :(得分:0)

我猜你的数据框// that's what you ended up with after `groupByKey.mapValues` val rddReduced: RDD[(Int, List[Int])] = ... val r = for { (k, values) <- rddReduced v <- values } yield (k, v) scala> :type r org.apache.spark.rdd.RDD[(Int, Int)] scala> r.foreach(println) (3,10) (2,5) (2,7) (1,2) (1,3) // even nicer to our eyes scala> r.toDF("key", "value").show +---+-----+ |key|value| +---+-----+ | 1| 2| | 1| 3| | 2| 5| | 2| 7| | 3| 10| +---+-----+ 中没有Diet.Factor列,但是在全局环境中有这个列,因此它不受子集限制。这是唯一可能的原因。