我想將vales賦值給一個已命名的矢量,具體取決於我按行循環的df中的值。根據文檔,我發現RHS的情況是什麼時候是一個向量,而我試圖做的是讓RHS成爲一個實際的分配步驟。這可能嗎? Case_when真的不必if語句用更優雅的位置:當使用dplyr情況下爲矢量賦值時
test.df <- data.frame(cat1 = c('label1', 'label2', 'label3'),
cat2 = c('label3', '', ''),
cat3 = c('', 'label2', 'label1'))
test.lst <- apply(test.df, 1, function(x){
test.vec <- c(label1 = 0, label2 = 0, label3 = 0)
case_when(
x[['cat1']]=='label1' | x[['cat2']]=='label1' | x[['cat3']]=='label1' ~ test.vec['label1'] <- 1,
x[['cat1']]=='label2' | x[['cat2']]=='label2' | x[['cat3']]=='label2' ~ test.vec['label2'] <- 1,
x[['cat1']]=='label3' | x[['cat2']]=='label3' | x[['cat3']]=='label3' ~ test.vec['label3'] <- 1
)
})
由於每個'case_when()'語句只有兩種情況,'if_else()'會的工作了。 –