¿Existe alguna forma de agregar columnas a un dataframe que esté en forma de función?
¿Existe alguna forma de agregar columnas a un dataframe que se encuentra en forma de función?
dfs <- function(){iris}
d <- nrow(dfs())
dfs()$new <- seq_len(d)
Error in dfs()$new <- seq_len(d) : parte izquierda inválida (NULL) de la asignación
Salida esperada
head(dfs())
Sepal.Length Sepal.Width Petal.Length Petal.Width Species new
1 5.1 3.5 1.4 0.2 setosa 1
2 4.9 3.0 1.4 0.2 setosa 2
3 4.7 3.2 1.3 0.2 setosa 3
4 4.6 3.1 1.5 0.2 setosa 4
5 5.0 3.6 1.4 0.2 setosa 5
6 5.4 3.9 1.7 0.4 setosa 6
davy.ai
Sí, hay una forma de agregar columnas a un dataframe que está en forma de una función. En el código proporcionado, el problema es que la función
dfs()
devuelve una copia del conjunto de datosiris
en lugar de una referencia a él. Por lo tanto, cuando intentamos asignar una nueva columna adfs()
, en realidad la estamos asignando a una copia del conjunto de datos original que no se guarda en ningún lugar. Para solucionar esto, debemos modificar la funcióndfs()
para que devuelva una referencia al conjunto de datosiris
en su lugar:““{r}
dfs <- function() {iris}
Ahora podemos agregar una nueva columna al dataframe
d <- nrow(dfs())
dfs()$new <- seq_len(d)
head(dfs())
Ahora podemos ver que la columna
new
se ha agregado con éxito al conjunto de datosiris
.