每個元素我有一個巨大的名單,以下是trboot6
r使用功能與if語句列表
UPDATE的示例:我不想刪除多餘的「1」或「-1」。相反,我想將其更改爲零。我很抱歉
dput()
structure(list(`1` = c(-1, 1, -1, -1, -1, -1, -1, -1, -1, 1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1), `2` = c(-1,
-1, -1, 1, 1, 1, -1, -1, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1,
-1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1), `3` = c(1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1), `4` = c(-1,
-1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, 1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 1), .Names = c("1", "2", "3", "4"))
把下面僅供說明用途
$ 1 : num [1:39] -1 1 -1 -1 -1 -1 -1 -1 -1 1 ...
$ 2 : num [1:46] -1 -1 -1 1 1 1 -1 -1 -1 -1 ...
$ 3 : num [1:48] 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
$ 4 : num [1:43] -1 -1 1 -1 -1 -1 -1 -1 -1 -1 ...
我想要做的是檢查,如果每個列表中的每對具有1和-1。對在括號中表示如下所示:
$ 1 : num [1:39] (-1 1) (-1 -1) (-1 -1) (-1 -1) (-1 1) ...
$ 2 : num [1:46] (-1 -1) (-1 1) (1 1) (-1 -1) (-1 -1) ...
$ 3 : num [1:48] (1 -1) (-1 -1) (-1 -1) (-1 -1) (-1 -1) ...
$ 4 : num [1:43] (-1 -1) (1 -1) (-1 -1) (-1 -1) (-1 -1) ...
如果對不具有圖1和-1,那麼,我想第二相同數目改變到零,即如果對是(1 1)
,我改變第二個1爲零以得到'(1 0)'。如果再有1個,我也改變這個1。然後,如果有一個-1,它將與第一1.
配對以更好的代碼,我使用的總和應該總是-2和2之間保持了對存在的邏輯。 Pair不能是(1,-1)(-1,1)或(1,-1)(1,-1)。所以,如果餘額變< -2或> 2,最新的數字已被刪除。
這裏是我上面的邏輯代碼:
balboot<-0
fboot<- function(x) {
ifelse(x==-1,balboot<-balbbot-1,balboot<-balboot+1)
if(balboot==-2){x<-0
balboot=-1}
if(balboot==2){x<-0
balboot=1}
return(fboot)
}
rdtp<-lapply(trboot6, FUN=fboot)
運行在此之後,我得到警告:
In if (x == 1) { ... :
the condition has length > 1 and only the first element will be used
預期輸出:
list '1': -1, 1, -1, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
list '2': -1, 0, 0, 1, 1, 0, -1, -1,0, 0, 0, 0, 1, 1, -1, -1, 0, 0, 0, 1, 1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0
感謝您的提前幫助。
請發佈一個可重複使用的示例usign'dput'。此外,而不是'if/else'使用'ifelse',因爲它是矢量化的 – akrun
hello! @akrun我在問題開始時發佈了dput。 – miababy
您可以發佈列表中第一個條目的預期輸出嗎? – bouncyball