我想創建一個串列,其中包含根據某個字符是否存在顯示 1 或 0 的向量。資料具有以下形式:
list <- list('a', 'b', 'c', 'd', 'e')
col1 <- c('ta', 'ta', 'tb', 'tb', 'tb', 'tc', 'td', 'te')
我想要的是“串列”的所有元素的串列,其中包含一個向量,當串列的元素存在于 col1 的元素中時顯示 1,而當它不存在時顯示 0。例如,對于“a”,此向量看起來像 (1,1,0,0,0,0,0,0)。
我的問題是為什么以下回圈不起作用:
test <- list()
for (i in list){
test[[i]] <- ifelse(grepl(list[i], col1), 1, 0)
}
此回圈回傳一個只有零的串列。
但是,當我單獨運行部分回圈時,它確實給出了正確的結果:
ifelse(grepl(list[1], col1), 1, 0)
這實際上回傳了我想要的向量:(1,1,0,0,0,0,0,0)。
如何正確回圈 R 中的字串串列?
uj5u.com熱心網友回復:
List <- list('a', 'b', 'c', 'd', 'e')
col1 <- c('ta', 'ta', 'tb', 'tb', 'tb', 'tc', 'td', 'te')
test <- list()
for (i in 1:length(List)){
test[[i]] <- ifelse(grepl(List[i], col1), 1, 0)
}
uj5u.com熱心網友回復:
您可以在不使用回圈的情況下僅在一行中執行此操作。看;
List <- list('a', 'b', 'c', 'd', 'e')
col1 <- c('ta', 'ta', 'tb', 'tb', 'tb', 'tc', 'td', 'te')
lapply(List, FUN = function(x) as.numeric(grepl(x, col1)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/531245.html
標籤:r细绳循环grepl
上一篇:Selenium無法獲取此類
