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(“弱”、“好”)