我有一個資料集加載到R中,并在其上定義了8個dplyr過濾器。我想把兩個過濾器的所有組合都應用到資料集上,以檢查所產生的組的大小。目前,我將這些過濾器存盤在這樣的變數中:
filter1 <- data %> % filter(var1 == x)
filter2 <- data %>% filter(var2 == y)
...
filter8 <- data %>% filter(varn == z)
現在我想把這些過濾器存盤在一個向量中,這樣我就可以在一個for-loop中呼叫應用它們,并做如下的事情:
filter_vec < - c(filter1, filter2, . ..., filter8)
for (i in filter_vec){>
for (j in filter_vec)
filter_insection <- dplyr::intersect(i,j)
print(nrow(filter_intersection)
}
}
然而,這并不奏效。結果總是一個長度為0的串列物件,表明所有的交叉點都是空的,而事實上它們不是。
我嘗試了許多方法來使代碼作業。首先,我沒有使用過濾器,而是嘗試從函式中獲取過濾功能(正如這篇文章中所建議的。我們可以在R中結合2個過濾器嗎?),而用函式的向量作業。在這里我遇到了基本相同的問題(包括 "無效的下標型別'list'錯誤")
。此外,我還嘗試了。1)使用 "expr "變數,2)使用 rlang 決議運算式,3)在將向量中的專案插入 dplyr 函式之前通過 "unlist "傳遞。然而,這些方法似乎都沒有起到作用。因此,我想知道如何在R中存盤和應用矢量的dplyr過濾器?
uj5u.com熱心網友回復:
將資料幀存盤在一個串列中,之后用for回圈,方法如下:
filter_vec < - list(filter1, filter2, . ..., filter8)
輸出< -向量('list'/span>。 length(filter_vec) * length(filter_vec))
k <- 0
for (i in filter_vec){ >。
for (j in filter_vec){>
k <- k 1
output[[k]] <- dplyr。 :intersect(i, j)
print(nrow(output[[k]]))
}
}
輸出
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/334037.html
標籤:
