c() 函数在 R 中的用途详解
c() 函数在 R 中的用途详解
c() 函数是 R 语言中最基础且最重要的函数之一,它是 “combine”(组合)的缩写,用于将多个值或向量组合成一个向量。
代码解析
在您提供的代码中:
model_origin <- c(
rep(“MDA PCa 79”, 3),
rep(“MDA PCa 117-9”, 3),
rep(“MDA PCa 130”, 2),
rep(“MDA PCa 144-4”, 5),
rep(“MDA PCa 144-13”, 4),
rep(“MDA PCa 146-10”, 3),
“MDA PCa 155-2”,
“MDA PCa 155-12”
)
c() 函数的作用是将所有 rep() 函数生成的向量和单独的元素组合成一个完整的向量。
c() 函数详解
基本语法
c(…, recursive = FALSE, use.names = TRUE)
• …:要组合的对象(可以是向量、列表或单个值)
• recursive:是否递归处理列表(默认为 FALSE)
• use.names:是否保留名称(默认为 TRUE)
结果解释
执行后,model_origin 向量将包含:
• 3 个 “MDA PCa 79”(来自 rep(“MDA PCa 79”, 3))
• 3 个 “MDA PCa 117-9”(来自 rep(“MDA PCa 117-9”, 3))
• 2 个 “MDA PCa 130”(来自 rep(“MDA PCa 130”, 2))
• 5 个 “MDA PCa 144-4”(来自 rep(“MDA PCa 144-4”, 5))
• 4 个 “MDA PCa 144-13”(来自 rep(“MDA PCa 144-13”, 4))
• 3 个 “MDA PCa 146-10”(来自 rep(“MDA PCa 146-10”, 3))
• 1 个 “MDA PCa 155-2”(直接作为字符串)
• 1 个 “MDA PCa 155-12”(直接作为字符串)
总共 3+3+2+5+4+3+1+1 = 22 个元素,与您的样本数量一致。
为什么使用 c()?
- 组合多个向量:将多个独立的向量合并成一个向量
- 创建复杂数据结构:可以混合使用重复模式和单个值
- 保持顺序:确保元素的顺序与输入顺序一致
- 基础操作:是许多更复杂操作的基础构建块
实际应用场景
- 创建简单向量
创建数值向量
numbers <- c(1, 2, 3, 4, 5)
创建字符向量
fruits <- c(“apple”, “banana”, “orange”)
创建逻辑向量
logicals <- c(TRUE, FALSE, TRUE)
- 组合现有向量
组合两个向量
vector1 <- c(1, 2, 3)
vector2 <- c(4, 5, 6)
combined <- c(vector1, vector2) # 结果: 1,2,3,4,5,6
- 添加元素到现有向量
在向量末尾添加元素
colors <- c(“red”, “green”, “blue”)
more_colors <- c(colors, “yellow”, “purple”)
在向量开头添加元素
more_colors <- c(“yellow”, colors)
- 创建因子变量
创建分组因子
groups <- c(rep(“Control”, 5), rep(“Treatment”, 5))
groups_factor <- factor(groups)
进阶用法
- 使用命名元素
创建带有名称的向量
named_vector <- c(a = 1, b = 2, c = 3)
- 递归组合(处理列表)
递归组合列表
list1 <- list(a = 1, b = 2)
list2 <- list(c = 3, d = 4)
combined_list <- c(list1, list2, recursive = TRUE)
- 类型转换
混合类型时会发生类型转换
mixed <- c(1, “two”, TRUE) # 所有元素会被转换为字符型
注意事项
- 类型一致性:c() 会尝试将所有元素转换为相同的类型(遵循类型优先级:字符 > 数值 > 逻辑)
- 维度丢失:使用 c() 会丢失矩阵或数组的维度属性
- 性能考虑:对于大型数据集,使用更高效的数据结构(如data.table)可能更合适
在您的临床数据框创建中,c() 函数与 rep() 函数配合使用,确保了模型来源信息能够准确对应到每个样本,这是进行正确分组分析的基础。