Curso
La función c()
de R es la forma más sencilla de crear y combinar vectores. Es una parte esencial de cómo R maneja los datos, y es algo que todo usuario de R debería saber.
Si te estás iniciando en R, asegúrate de seguir nuestro curso Introducción a la programación en R para aprender todo lo básico, incluidos vectores, listas, marcos de datos y mucho más. También escribí un artículo sobre cómo aprender R si quieres crear un plan de aprendizaje.
(Y si tienes curiosidad sobre la forma difícil de crear vectores , he creado una FAQ al final).
¿Qué es la función c() en R?
La documentación de la función c() de R nos dice que c()
combina valores en un vector (por lo que creo que es seguro asumir que la "c" significa "combinar"). Si no tienes claro lo que eso significa, te lo mostraré en los ejemplos siguientes.
Antes de continuar, debo decir, más concretamente, que la función c()
toma cualquier número de argumentos y devuelve un vector que contiene todos los valores. También coacciona automáticamente los valores a un tipo de datos común (al tipo de datos más flexible) si los tipos de datos son diferentes, en cuyo caso sería necesario.
Utilizar c() para combinar valores
Nuestro primer ejemplo: Puedes utilizar c()
para crear vectores combinando valores individuales o variables. Puedes ver con estos ejemplos que c()
funciona para distintos tipos de datos, como numéricos, de caracteres y lógicos.
numeric_vector <- c(10, 20, 30, 40)
character_vector <- c("apple", "banana", "cherry")
logical_vector <- c(TRUE, FALSE, TRUE)
Combinar vectores existentes con c()
También puedes combinar vectores existentes utilizando c()
. Esto es útil cuando quieres fusionar varias fuentes de datos o resultados.
first_half <- c(1, 2, 3)
second_half <- c(4, 5, 6)
full_vector <- c(first_half, second_half)
Utilizar c() con elementos con nombre
Puedes asignar nombres a los elementos de un vector utilizando c()
. Esto es útil para etiquetar datos.
fruit_counts <- c(apple = 5, banana = 3, cherry = 7)
c() con distintos tipos de datos
Al combinar distintos tipos de datos, c()
convertirá todos los elementos al más flexible. Por ejemplo, la combinación de números y caracteres dará como resultado un vector de caracteres. Esto se debe a que "dos" no puede leerse como un tipo numérico, pero "1" podría ser un carácter.
mixed_vector <- c(1, "two", 3)
Nuestro resultado aquí será un vector de caracteres: "1", "two", "3".
Crear un marco de datos con c()
Puedes utilizar c()
para crear vectores que te servirán de columnas en un marco de datos. Para ello, también utilizo la función data.frame()
para unir los vectores.
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)
Conclusión
Como has visto, la función c()
es una parte esencial de la programación en R. En los ejemplos he mostrado cómo puedes crear y combinar vectores.
Sigue nuestro curso de Introducción a la Programación en R para obtener un itinerario de aprendizaje estructurado para empezar y seguir avanzando en tus conocimientos.

Pregunta final
Has dicho que c() es la forma más fácil de crear vectores. ¿Qué es lo difícil?
Aunque c()
es el método más cómodo y fácil para principiantes, hay formas más complejas de crear vectores en R. Aquí tienes unas cuantas:
Inicialización manual con vector() e indexación
Puedes crear un vector vacío de un tipo y longitud determinados, y luego llenarlo de elemento en elemento:
x <- vector("numeric", 3) x[1] <- 1 x[2] <- 2 x[3] <- 3
Esto funciona, pero es más verboso y menos intuitivo para los principiantes.
Usar append() repetidamente
Puedes empezar con un vector vacío e ir añadiendo valores:
x <- c() x <- append(x, 1) x <- append(x, 2) x <- append(x, 3)
Esto es ineficaz y más difícil de leer.
Utilizar otras funciones como seq() o rep()
Estas funciones generan patrones específicos y son potentes, pero excesivas para vectores sencillos:
x <- seq(1, 3) y <- rep(1:3, times = 1)
Aplanamiento de otras estructuras
Podrías extraer elementos de una lista y convertirla en un vector:
my_list <- list(1, 2, 3) x <- unlist(my_list)