小编Zha*_* He的帖子

在 lm 公式中删除变量仍然会触发对比度错误

我正在尝试仅对我的数据子集运行 lm(),但遇到了问题。

dt = data.table(y = rnorm(100), x1 = rnorm(100), x2 = rnorm(100), x3 = as.factor(c(rep('men',50), rep('women',50)))) # sample data

lm( y ~ ., dt) # Use all x: Works
lm( y ~ ., dt[x3 == 'men']) # Use all x, limit to men: doesn't work (as expected)
Run Code Online (Sandbox Code Playgroud)

以上不起作用,因为数据集现在只有男性,因此我们不能将性别变量 x3 包含到模型中。但...

lm( y ~ . -x3, dt[x3 == 'men']) # Exclude x3, limit to men: STILL doesn't work
lm( y ~ x1 + x2, dt[x3 == 'men']) # Exclude x3, …
Run Code Online (Sandbox Code Playgroud)

r formula factors lm

9
推荐指数
1
解决办法
128
查看次数

R:apply()中的bug?

使用apply()时,我会遇到一些奇怪的行为.我正在尝试创建一个逻辑向量来指示给定列是否为虚拟变量(仅0和1值).只要所有非NA值均为0或1,具有缺失值仍应计为虚拟值.

如果有问题的数据框只包含数值,我的代码工作正常.但是,如果数据框还包含字符串列,则该函数不再忽略NA值,即使在检查以前工作的数字列时也是如此.

例:

x1 = c(1,0,1,NA)
x2 = c(1,1,0,1)
x3 = c(1,2,3,4)
x4 = c('a','b','c','d')
dat1 = data.frame(x1,x2,x3)
dat2 = data.frame(x1,x2,x3,x4)
isdum1 = apply(dat1,2,function(x) {all(x %in% c(0:1,NA))})
isdum2 = apply(dat2,2,function(x) {all(x %in% c(0:1,NA))})

isdum1   # works fine
   x1    x2    x3 
 TRUE  TRUE FALSE 
isdum2   # wtf?
   x1    x2    x3    x4 
FALSE  TRUE FALSE FALSE 
Run Code Online (Sandbox Code Playgroud)

r apply

1
推荐指数
1
解决办法
71
查看次数

标签 统计

r ×2

apply ×1

factors ×1

formula ×1

lm ×1