R 这个执行因子是什么(1*(hp>;200),标签=c(“弱”和“好”)

R 这个执行因子是什么(1*(hp>;200),标签=c(“弱”和“好”),r,R,我在想,我应该去哪里寻找答案 1*(hp>200)正在因子()中执行。或者我该如何使用它 > test<- mutate(mtcars, HPcat=factor(1 * (hp > 175), labels=c("weak","good"))) > str(test['HPcat']) 'data.frame': 32 obs. of 1 variable: $ HPcat: Factor w/ 2 levels "weak","good": 1 1 1 1 1

我在想,我应该去哪里寻找答案
1*(hp>200)
正在因子()中执行。或者我该如何使用它

> test<- mutate(mtcars, HPcat=factor(1 * (hp > 175), labels=c("weak","good")))
> str(test['HPcat'])
'data.frame':   32 obs. of  1 variable:
 $ HPcat: Factor w/ 2 levels "weak","good": 1 1 1 1 1 1 2 1 1 1 ...
> 
> # So changing the 1 to a different number don't do nothing
> 
> test<- mutate(mtcars, HPcat=factor(100 * (hp > 175), labels=c("weak","good")))
> str(test['HPcat'])
'data.frame':   32 obs. of  1 variable:
 $ HPcat: Factor w/ 2 levels "weak","good": 1 1 1 1 1 1 2 1 1 1 ...
测试175),标签=c(“弱”、“好”)) >str(测试['HPcat']) “data.frame”:32 obs。第1个变量: $HPcat:系数w/2级“弱”、“好”:1 1。。。 > >#因此,将1改为不同的数字并没有什么作用 > >测试175),标签=c(“弱”、“好”)) >str(测试['HPcat']) “data.frame”:32 obs。第1个变量: $HPcat:系数w/2级“弱”、“好”:1 1。。。
R允许在数值表达式中使用布尔真/假值,将
false
视为
0
,将
true
视为
1
。因此,表达式
1*(hp>200)
(通常以另一种形式编写
0+(hp>200)
)是执行此转换的一种方式——每当
hp
超过200时,值为1,否则为0

当给定0和1的向量时,
factor
函数将其转换为两个级别的因子,
0
1
labels=
参数将级别重新标记为
weak
good
。如果使用
100*(hp>200)
,0和100s的向量将变成一个具有两个级别的因子
0
100
,这两个级别由
labels=
参数重新标记,给出相同的最终答案

如果所有
hp
值均为200,则此代码将失败,因为它依赖于转换向量同时包含0和1,以便使用两个级别正确构造因子

这是一段糟糕的代码,我建议不要模仿它。更清楚的是:

factor(ifelse(hp>175,"good","weak"), levels=c("weak","good"))

或者避免使用
ifelse
-
因子(mtcars$hp<50,级别=c(真、假),标签=c(“弱”、“好”)