跳至主要内容

R c 函数:轻松创建向量

学习如何使用 R 的 c() 函数高效地将值合并为向量。
· 2分钟 阅读

使用 AI 探索

R 中的 c() 函数是创建和合并向量的最简单方法。它是 R 处理数据的核心部分,每位 R 用户都应该掌握。

如果您刚开始学习 R,建议先参加我们的 R 编程入门课程,学习包括向量、列表、数据框等在内的基础知识。如果您想制定学习计划,我还写过一篇关于如何学习 R的文章。

(如果您对“困难方式”创建向量感到好奇,我在文末准备了一个常见问题解答。)

R 中的 c() 函数是什么?

R c() 函数文档告诉我们,c() 会将值组合成一个向量(所以我认为可以合理推测这个 “c” 代表 “combine”,即合并)。如果您还不清楚这意味着什么,我会在下面的示例中展示其用法。  

在继续之前,更具体地说,c() 函数可以接受任意数量的参数,并返回一个包含所有值的向量。如果参数的数据类型不同,它还会自动将值强制转换为共同的数据类型(即最灵活的数据类型),在需要时完成该转换。

使用 c() 合并值

第一个示例:您可以使用 c() 通过合并单个值或变量来创建向量。如下所示,c() 适用于不同的数据类型,如数值、字符和逻辑型。

numeric_vector <- c(10, 20, 30, 40) 
character_vector <- c("apple", "banana", "cherry") 
logical_vector <- c(TRUE, FALSE, TRUE)

用 c() 合并已有向量

您也可以使用 c() 合并已有的向量。当您想要合并多个数据来源或结果时,这会很有用。

first_half <- c(1, 2, 3)
second_half <- c(4, 5, 6)
full_vector <- c(first_half, second_half)

将 c() 与具名元素一起使用

您可以使用 c() 为向量中的元素指定名称。这有助于为数据添加标签。

fruit_counts <- c(apple = 5, banana = 3, cherry = 7)

c() 与不同数据类型

当合并不同数据类型时,c() 会将所有元素转换为最灵活的类型。例如,将数字与字符合并会得到字符向量。这是因为 “two” 不能被读取为数值类型,而 “1” 则可以是字符。

mixed_vector <- c(1, "two", 3)

这里的结果将是一个字符向量:“1”、“two”、“3”。

使用 c() 创建数据框

您可以使用 c() 创建将作为数据框列的向量。为此,我还使用了 data.frame() 函数来把这些向量组合在一起。

customer_names <- c("Alice", "Bob", "Charlie")
purchase_totals <- c(120.50, 75.00, 99.99)
customer_data <- data.frame(name = customer_names, total = purchase_totals)

结论

如您所见,c() 函数是 R 编程中不可或缺的一部分。我通过示例展示了如何创建并合并向量。

参加我们的 R 编程入门课程,按结构化路径起步并持续提升您的技能。

Josef Waples

作者

Josef Waples

我是数据科学编辑,曾为科学期刊发表的研究论文撰稿。我的兴趣领域包括线性代数、统计学、R 等相关主题。

最后一个问题

您说 c() 是创建向量的简单方法。那么“困难方法”是什么?

尽管 c() 是最方便、也最适合初学者的方法,R 中还有一些更复杂的创建向量的方式。如下:

使用 vector() 和索引进行手动初始化 

您可以先创建一个指定类型和长度的空向量,然后逐个填充值:

x <- vector("numeric", 3) x[1] <- 1 x[2] <- 2 x[3] <- 3

这种方法可行,但更冗长,对初学者也不够直观。

反复使用 append() 

您可以从一个空向量开始,不断追加值:

x <- c() x <- append(x, 1) x <- append(x, 2) x <- append(x, 3)

这种方式效率低且可读性差。

使用 seq() 或 rep() 等其他函数

这些函数能生成特定模式,功能强大——但对于简单向量来说有些大材小用:

x <- seq(1, 3) y <- rep(1:3, times = 1)

 扁平化其他结构 

您可以从列表中提取元素并将其转换为向量:

my_list <- list(1, 2, 3) x <- unlist(my_list)

主题