我遇到了非常奇怪的問題。我定義了一個從在線源加載資料并在一些轉換后回傳資料框的函式。但是,我意識到輸出的兩列中的資料有十進制分隔符“,”,這導致 R 將此列解釋為因子。
我試圖做的是通過在函式體中添加兩行額外的行來轉換函式內的資料:
data_table$usd <- as.numeric(sub(",", ".", data_table$usd))
data_table$eur <- as.numeric(sub(",", ".", data_table$eur))
但事實證明,這會用數字向量(我猜是最后一行代碼的輸出)覆寫整個輸出(data_table)。另一方面,當我在函式之外執行完全相同的代碼時,它會按我的預期作業,這讓我更加困惑。
任何想法,為什么函式內的代碼不能轉換單列,而是覆寫整個資料框?
uj5u.com熱心網友回復:
我在這里猜測,但您可能會像這樣以列的分配結束函式體
modified_iris <- function() {
my_iris <- iris
my_iris$new <- toupper(iris$Species)
}
head(modified_iris())
#> [1] "SETOSA" "SETOSA" "SETOSA" "SETOSA" "SETOSA" "SETOSA"
相反,您要確保回傳完整的資料框
modified_iris <- function() {
my_iris <- iris
my_iris$new <- toupper(iris$Species)
my_iris
}
head(modified_iris())
#> # A tibble: 6 × 6
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species new
#> <dbl> <dbl> <dbl> <dbl> <fct> <chr>
#> 1 5.1 3.5 1.4 0.2 setosa SETOSA
#> 2 4.9 3 1.4 0.2 setosa SETOSA
#> 3 4.7 3.2 1.3 0.2 setosa SETOSA
#> 4 4.6 3.1 1.5 0.2 setosa SETOSA
#> 5 5 3.6 1.4 0.2 setosa SETOSA
#> 6 5.4 3.9 1.7 0.4 setosa SETOSA
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/420142.html
標籤:
