我正在嘗試在 r 中撰寫一個 for 回圈,以將 r 中具有相似字符模式的多個變數轉換為as.factor.
下面是我寫的函式,R 運行代碼,沒有顯示任何錯誤,但沒有給出想要的輸出。有一個邏輯錯誤,有人可以幫我糾正這個錯誤嗎?
for (i in grep(pattern = "hml35_", x=tanre))
{
tanre$i<-as.factor(tanre$i)
}
uj5u.com熱心網友回復:
假設grep模式回傳列名,您需要更改語法:
for (i in grep(pattern = "hml35_", x=tanre))
{
tanre[[i]]<-as.factor(tanre[[i]])
}
當您使用運算子時,R 需要文字列名$。
編輯:您可以lapply在此處使用而不是回圈。我也會看看使用 mutate across。
編輯2:
根據要求,您可以這樣做lapply:
# Create some data
tanre <- data.frame(
id = c(1:12),
hml35_a = rep(c("a", "b", "c"), 4),
hml35_b = rep(c("a", "b", "c"), 4)
)
sapply(tanre, class)
# id hml35_a hml35_b
# "integer" "character" "character"
# Make factor
tanre[grep("hml35_", names(tanre))] <- lapply(tanre[grep("hml35_", names(tanre))], as.factor)
sapply(tanre, class)
# id hml35_a hml35_b
# "integer" "factor" "factor"
uj5u.com熱心網友回復:
tidyverse 的解決方案
library(tidyverse)
tanre %>%
mutate_at(vars(contains("hml35_")), as.factor)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/456866.html
