[問題類型]:
效能諮詢(我想讓R 跑更快)
[軟體熟悉度]:
請把以下不需要的部份刪除
入門(寫過其他程式,只是對語法不熟悉)
[問題敘述]:
請簡略描述你所要做的事情,或是這個程式的目的
手上有兩個檔案,分別是參照表以及原始檔
其中一個參照表為
EX:
檔案DT
1 ^123.* A
2 ^234.* B
.
.
.
原始檔為
檔案DT2
1. 123456
2. 23456
經由比對可以發現
1.=>為A
2.=>為B
[你的答案]:
我的寫法是用迴圈方式然後
想請問有沒有更好的寫法
ansewer <- c()
for (i in 1:nrow(DT))
{
ind <- grepl(DT[i, 1, with=F], DT2)
for(j in which(ind==1))
{
ansewer[j] <- ifelse(TYPE[j]==0, DT2[i],ansewer[j] )
}
}
[關鍵字]:
grepl
Hi,所以DT裡面是正則表示式而DT2裡面應該是本值囉lapply(DT[,1],function(k) {grep(k,DT2$whatever)}我猜你是想知道DT的正則表示式能符合DT2的哪些值我這個寫法就不需要包兩個loop這麼麻煩了,每個list的elelement都是符合DT裡面正則表示式的rownumber阿,我lapply忘記用 )包起來,要加進去才能用例如DT2有一個值符合兩種正則表示式,則使用順位在前的作為該值的編號嗎?