簡體   English   中英

在 R 中使用 for 循環遍歷名稱向量

[英]Iterating through a vector of names using for loop in R

library(sjPlot)

我正在使用 sjPlot 創建快速 xtabs:

sjPlot::tab_xtab(var.row = mtcars$mpg ,var.col =mtcars$wt ,show.row.prc = TRUE)

但由於我在許多列上運行它,我想建立一個循環:

    cols <- names(mtcars)
    for (i in cols) {
    
      sjPlot::tab_xtab(
        var.row =  mtcars$mpg,
        var.col = mtcars$i,
        show.row.prc = TRUE
      )
}

但這會引發錯誤:

Error in table(x_full, grp_full) : 
  all arguments must have the same length

為什么會發生這種情況,有人可以通過迭代解釋子集,或者給我指出一個好的資源嗎?

僅供參考 ---這不會返回任何內容。

for (i in cols) {
  i <- 'cyl'
  
  sjPlot::tab_xtab(
    var.row =  mtcars$mpg,
    var.col = mtcars[[i]],
    show.row.prc = TRUE
  )
  
}

但這確實返回了 mpg - cyl 的圖表:

for (i in cols) {

  sjPlot::tab_xtab(
    var.row =  mtcars$mpg,
    var.col = mtcars$cyl,
    show.row.prc = TRUE
  )
  
}

感謝您的評論,這是解決方案,但仍在尋找一些理解。 為什么是 mtcars[[i]] 而不是 mtars[i]? 為什么 mrcars$i 不起作用?

for (i in cols) {

  plt <- sjPlot::tab_xtab(
    var.row =  mtcars$mpg,
    var.col = mtcars[[i]],
    show.row.prc = TRUE
  )
  print(plt)
  
}

暫無
暫無

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

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