有沒有辦法以函式的形式向資料框添加列
dfs <- function(){iris}
d <- nrow(dfs())
dfs()$new <- seq_len(d)
Error in dfs()$new <- seq_len(d) : invalid (NULL) left side of assignment
預期產出
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
uj5u.com熱心網友回復:
全域環境中沒有創建物件。在這種情況下,我們可以使用transform
transform(dfs(), new = seq_len(d))
或使用
`[<-`(dfs(), "new", value = seq_len(d))
如果我們想使用$,創建一個物件
tmp <- dfs()
tmp$new <- seq_len(d)
uj5u.com熱心網友回復:
我們可以使用包中的add_column函式tibble:
library(tibble)
mtcars %>%
add_column(my_new_column = 1:32,
.after = "cyl")
uj5u.com熱心網友回復:
感謝@Adam 的建議。我們可以使用1:n()更簡潔的代碼。
library(dplyr)
dfs <- function() {
iris
}
dfs() %>%
{
mutate(., new = 1:nrow(.))
} %>%
head()
#> 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
dfs() %>%
mutate(new = 1:n()) %>%
head()
#> 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
dfs() %>%
mutate(new = 1:nrow(cur_data())) %>%
head()
#> 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
由reprex 包于 2022-01-07 創建(v2.0.1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/404920.html
標籤:
下一篇:如何標記x軸上的條形組?
