r - 更改 R 中类型因子的变量的值
问题描述
在 R 中,当我有一个因子类型的变量时,我只能更新指定因子级别内的值。举个简单的例子:
LowerCourt = factor(x=c("conser", "liberal"), levels=c("conser", "liberal"))
> LowerCourt
[1] conser liberal
Levels: conser liberal
因此,以下是允许的:
LowerCourt[1] <- "liberal"
> LowerCourt
[1] liberal liberal
Levels: conser liberal
但由于复位值超出指定级别,因此不允许以下情况:
LowerCourt[1] <- "libera"
但是,该方案因大小为 1 的因素而分崩离析,如下所示:
LowerCourt = factor(x="conser", levels=c("conser", "liberal"))
LowerCourt <- "liberal"
重新分配改变了现在的类型class(LowerCourt) == "character"
,违背了使用因子类型的目的。我想要的是在指定级别内重置值并保留类型。
我在列表中遇到过这种情况(例如,input
),其中的内容是因子(例如input$LowerCourt
,input$Petitioner
等)。每当我将一个因子的值重置为允许的水平之一时,该值都会发生变化,但类型(字符)也会发生变化。这会破坏其他一些需要正确类型的代码。
对于解决此问题的任何指导,我将不胜感激。
解决方案
这与 的长度无关factor
,您实际上是通过为变量分配新值来覆盖先前的值LowerCourt
。
如果您像第一个示例一样仅更改第一个值,LowerCourt
仍将保持为factor
LowerCourt[1] <- "liberal"
LowerCourt
#[1] liberal
#Levels: conser liberal
此外,即使因子变量的长度大于一,但如果你覆盖它得到的值,它就会变成字符。
LowerCourt = factor(x=c("conser", "liberal"), levels=c("conser", "liberal"))
LowerCourt <- "liberal"
LowerCourt
#[1] "liberal"
推荐阅读
- c# - 所有登录用户的会话过期日期时间都相同,如何防止?
- asp.net - 为什么 SharePoint 远程事件接收器为托管在 azure Web 应用程序中的 .SVC 引用错误的 URL
- javascript - 如果我将其模块传递给构造函数而不是要求它,如何创建一个类的实例?
- python - mypy 抱怨:带有 Type[TypeVar['T', str, date]] 和 T 输出的函数类型注释:不兼容的返回值类型(得到“str”,预期的“date”)
- javascript - 当我根据数组在这样的 URL (/student/:1) 中输入 ID 时如何显示,所有详细信息都想根据 ID 显示?
- python - 无法避免 Cython 在 Python2.7 而不是 Python3.x 中编译外部 C 模块
- php - 我如何在控制器功能中使用我的 html 标签
- javascript - 选中Vue中一个复选框上的所有复选框
- google-apps-script - Google 表格 - Json 到表格
- java - 如何在 java:invoke in mule 4 之后将 java 对象转换为 JSON