R 版本的 inplace=True
R version of inplace=True
我开始学习 R,但我很难更改一个因子中的值的名称。我已尝试使用重估和重新编码,但在查看数据框时仍然看到原始名称。
DF 的外观如下:
head(freecut)
gender oldness student_loaniness homeland
1 0 20 4 Eurasia
2 1 25 4 Oceana
3 1 56 2 Eastasia
4 0 65 6 Eastasia
5 1 50 5 Oceana
6 0 20 5 Eastasia
这里是编码尝试:
revalue(freecut$homeland, c("Eastasia" = "East_Asia", "Eurasia" = "Asiope",
"Oceana" = "Nemoville"))
recode(freecut$homeland, Eastasia = "East_Asia", Eurasia = "Asiope",
Oceana = "Nemoville")
运行 之后 DF 的代码看起来完全一样。我知道在 Python 中我必须投入 "inplace = TRUE" 才能使更改生效——不确定我需要在这里做什么(或者我缺少什么)。
R 不会就地修改,您必须分配结果 - 要么返回原始变量进行修改,要么分配给新变量。这是函数式编程的范例,而R是一种函数式编程语言。
如果你有x = 1
,运行宁x + 1
将评估并打印结果,2
,但x
不会改变。如果你想用修改后的值覆盖 x
,你 运行 x = x + 1
.
同理,运行ning recode
,会计算并打印出一个结果,但是如果你想修改数据框中的列,你需要显式地给它赋值freecut$homeland = recode(...)
.
附加包中有一些例外。例如,data.table
包定义了一些 set*
操作符,它们可以就地修改对象。 data.table
很棒,特别是如果您需要效率,但如果您刚开始使用 R,我建议您先熟悉基础知识。
除了解决更基本问题的 Gregor 的回答之外,您还可以在您的特定情况下使用 levels<-
:
levels(freecut$homeland) <- c("first", "second", "third")
# order is important if you don't want surprises
或者,如果您准备加入黑暗面,请考虑 gtools
包中的宏。描述了第一步,例如在 https://www.r-bloggers.com/macros-in-r/。没有人在 R 中使用宏,但我不知道为什么。也许它们很危险,但也许它们只是看起来晦涩难懂。
我开始学习 R,但我很难更改一个因子中的值的名称。我已尝试使用重估和重新编码,但在查看数据框时仍然看到原始名称。
DF 的外观如下:
head(freecut)
gender oldness student_loaniness homeland
1 0 20 4 Eurasia
2 1 25 4 Oceana
3 1 56 2 Eastasia
4 0 65 6 Eastasia
5 1 50 5 Oceana
6 0 20 5 Eastasia
这里是编码尝试:
revalue(freecut$homeland, c("Eastasia" = "East_Asia", "Eurasia" = "Asiope",
"Oceana" = "Nemoville"))
recode(freecut$homeland, Eastasia = "East_Asia", Eurasia = "Asiope",
Oceana = "Nemoville")
运行 之后 DF 的代码看起来完全一样。我知道在 Python 中我必须投入 "inplace = TRUE" 才能使更改生效——不确定我需要在这里做什么(或者我缺少什么)。
R 不会就地修改,您必须分配结果 - 要么返回原始变量进行修改,要么分配给新变量。这是函数式编程的范例,而R是一种函数式编程语言。
如果你有x = 1
,运行宁x + 1
将评估并打印结果,2
,但x
不会改变。如果你想用修改后的值覆盖 x
,你 运行 x = x + 1
.
同理,运行ning recode
,会计算并打印出一个结果,但是如果你想修改数据框中的列,你需要显式地给它赋值freecut$homeland = recode(...)
.
附加包中有一些例外。例如,data.table
包定义了一些 set*
操作符,它们可以就地修改对象。 data.table
很棒,特别是如果您需要效率,但如果您刚开始使用 R,我建议您先熟悉基础知识。
除了解决更基本问题的 Gregor 的回答之外,您还可以在您的特定情况下使用 levels<-
:
levels(freecut$homeland) <- c("first", "second", "third")
# order is important if you don't want surprises
或者,如果您准备加入黑暗面,请考虑 gtools
包中的宏。描述了第一步,例如在 https://www.r-bloggers.com/macros-in-r/。没有人在 R 中使用宏,但我不知道为什么。也许它们很危险,但也许它们只是看起来晦涩难懂。