R 因子

因子(Factor)是一种用于处理可分类数据的结构。

假设一个数据字段,例如婚姻状况,可能只包含“单身”、“已婚”、“分居”、“离婚”或“丧偶”这几个值。

在这种情况下,我们事先知道可能的值,而这些预定义的、不同的值称为因子的“级别”(levels)。


在 R 中创建因子

在 R 中,我们使用 factor() 函数来创建因子。一旦创建了因子,它就只能包含预定义的集合值,这些值称为级别。

创建因子的语法是:

factor(vector)

这里,factor() 以一个向量作为参数。

让我们看一个例子,

# create a factor
students_gender <- factor(c("male", "female", "male", "transgender", "female"))

# print the marital_status factor
print(students_gender)

输出

[1] male   female   male   transgender    female     
Levels: female male transgender

在上面的示例中,我们使用 factor() 函数创建了一个名为 students_gender 的因子。

请注意,在打印 students_gender 时,我们得到了两个输出:

  • 所有向量中的项
  • 预定义的可能值,我们事先知道,即 students_gender 的级别

访问因子元素

访问向量元素的语法与访问向量元素类似。我们使用索引号。例如:

# create a factor
students_gender <- factor(c("male", "female", "male", "transgender", "female"))

# access 1st element of students_gender
print(students_gender[1])

# access 4th element of students_gender
print(students_gender[4])

输出

[1] male
Levels: female male transgender
[1] transgender
Levels: female male transgender

在上面的示例中,我们使用索引号来访问 students_gender 的元素。

  • students_gender[1] - 返回 students_gender 的第一个元素,即 "male"
  • students_gender[4] - 返回 students_gender 的第四个元素,即 "transgender"

请注意,每次我们访问和打印因子元素时,也会同时显示因子的级别。


修改因子元素

要更改向量元素,我们可以简单地将新值重新分配给特定的索引。例如:

# create a factor
marital_status <- factor(c("married", "single", "single", "divorced", "married"))

# print the marital_status factor
marital_status[1] <- "divorced"

print(marital_status[1])

输出

[1] divorced
Levels: divorced married single

在这里,我们已经将 marital_status 因子的索引 1 的值重新分配为 "divorced",以替换原来的 "married"


常见问题

如何在 R 中查找因子的长度?

在 R 中,我们使用 length() 函数来查找因子中存在的项的数量。例如:

# create a factor
marital_status <- factor(c("married", "single", "single", "divorced", "married"))

cat("Total Elements:", length(marital_status))

输出

Total Elements: 5
如何在 R 中遍历因子?

在 R 中,我们也可以使用 for 循环来遍历因子的每个元素。例如:

# create a factor
marital_status <- factor(c("married", "single", "single", "divorced", "married"))

# iterate through each elements of marital_status
for (status in marital_status) {
    print(status)
}

输出

[1] "married"
[1] "single"
[1] "single"
[1] "divorced"
[1] "married"
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战