簡體   English   中英

Function in R 為幾個變量

[英]Function in R for several variables

我想取消分類 R 中的幾個因子變量。我需要這個功能來處理很多變量。 目前我為每個不方便的變量重復代碼:

unclass:
  myd$ati_1 <-unclass(myd$ati_1) 
  myd$ati_2 <-unclass(myd$ati_2)  
  myd$ati_3 <-unclass(myd$ati_3) 
  myd$ati_4 <-unclass(myd$ati_4)

我查看了apply() function 系列,但我什至不知道這是否是正確的方法。 我還閱讀了有關 for 循環的內容,但每個示例都只是關於簡單的整數,而不是當您需要循環多個變量時。

如果有人能幫助我,我會很高興。

這里有幾種方法。 我們使用 R 附帶的 CO2,它有幾個因子列。 這取消了這些列的分類。

如果您需要其他標准,那么

  • 將 ix 設置為名稱或位置或定義那些要在基本 R 解決方案中轉換的列的邏輯向量
  • 用名稱或位置向量或表示要轉換的列的邏輯向量替換折疊解決方案中的 is.factor
  • 在 dplyr 解決方案中,將 where(...) 替換為相同的名稱、位置或邏輯。

代碼如下。 在所有這些中,輸入都沒有被覆蓋,因此如果您想從頭開始重新運行它,您仍然可以使用未更改的輸入,並且一般來說,覆蓋對象很容易出錯。

# Base R
ix <- sapply(CO2, is.factor)
replace(CO2, ix, lapply(CO2[ix], unclass))

# collapse
library(collapse)
ftransformv(CO2, is.factor, unclass)

# dplyr
library(dplyr)
CO2 %>%
  mutate(across(where(is.factor), unclass))

根據您的需要,這可能就足夠了,或者如果矩陣結果正常,則省略 as.data.frame。

as.data.frame(data.matrix(CO2))

您可以使用循環:

    block <- c("ati_1", "ati_2", "ati_3", "ati_4")
    for (j in block) {myd[[j]] <- unclass(myd[[j]])}
# The double brackets allows you to specify actual names to extrapolate withing the data frame

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM