es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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
Tags:  ,

Answer

  1. Avatar for 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 datos iris en lugar de una referencia a él. Por lo tanto, cuando intentamos asignar una nueva columna a dfs(), 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ón dfs() para que devuelva una referencia al conjunto de datos iris 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())


    Salida: ````{r} 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

    Ahora podemos ver que la columna new se ha agregado con éxito al conjunto de datos iris.

Comments are closed.