gpt4 book ai didi

r - 为什么 gsub 会自动将 Factor 更改为 Character

转载 作者:行者123 更新时间:2023-12-01 13:13:34 34 4
gpt4 key购买 nike

加载数据时,R 将字符串转换为 Factors,除非另有说明。然后,我们必须根据基础数据将 Factors 转换为字符或数字。在数值的情况下,我们首先使用 as.character() 转换为字符串,然后在整数值的情况下将结果转换为 as.integer()。

但是在使用 gsub 清理数字中的字符时,R 会自动将清理后的字符串转换为字符。

例如:

> sal <- data.frame(name = c('abc','def','ghi','pqr'),
+ Salary = c('$65,000','$102,000','$85,000','$72,000'))
> str(sal)
'data.frame': 4 obs. of 2 variables:
$ name : Factor w/ 4 levels "abc","def","ghi",..: 1 2 3 4
$ Salary: Factor w/ 4 levels "$102,000","$65,000",..: 2 1 4 3
> sal$Salary <- gsub('\\$','',sal$Salary)
> sal$Salary <- gsub(',','',sal$Salary)
> str(sal)
'data.frame': 4 obs. of 2 variables:
$ name : Factor w/ 4 levels "abc","def","ghi",..: 1 2 3 4
$ Salary: chr "65000" "102000" "85000" "72000"
>

我们可以看到在 gsub 之后“Salary”列从 Factor 变为 Character。有人能告诉我 gsub 是否也在这里执行 as.character() 操作吗?如果是这样,它不会将列转换为整数,因为所有值都是整数吗?

最佳答案

是的,gsub执行 as.character .如果您输入 gsub在控制台中,您可以看到该功能

function (pattern, replacement, x, ignore.case = FALSE, perl = FALSE, 
fixed = FALSE, useBytes = FALSE)
{
if (!is.character(x))
x <- as.character(x)
.Internal(gsub(as.character(pattern), as.character(replacement),
x, ignore.case, perl, fixed, useBytes))
}

不,它不会直接转换为整数,因为它总是返回一个字符向量。来自 ?gsub

sub and gsub return a character vector of the same length and with the same attributes as x (after possible coercion to character).

关于r - 为什么 gsub 会自动将 Factor 更改为 Character,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58163662/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com