0
這裏是我的數據庫麻煩與功能環境控制流和可能分配
PERSON_ID EVENT
1 10000000001 LST_Mammo_EPI
2 10000000001 EPI
3 10000000002 BC1
4 10000000002 R_B
5 10000000002 BC2
6 10000000002 DEATH
7 10000000002 EPI
8 10000000004 FST_Mammo_FUP1
9 10000000004 OV1_FUP1
10 10000000004 BC1
11 10000000004 LST_Mammo_EPI
12 10000000004 EPI
13 10000000004 OV2_FUP1
14 10000000004 LST_Mammo_FUP1
15 10000000004 FUP1
16 10000000004 BC2
17 10000000004 FUP2
18 10000000005 LST_Mammo_EPI
19 10000000005 EPI
20 10000000007 BC1
21 10000000007 BC2
22 10000000007 DEATH
23 10000000010 DEATH
24 10000000826 FST_Mammo_FUP1
25 10000000826 BC1
26 10000000826 L_B
27 10000000826 LST_Mammo_EPI
28 10000000826 LST_Mammo_FUP1
29 10000000826 BC2
30 10000000826 R_B
31 10000000826 EPI
32 10000000826 OV1_FUP1
33 10000000826 OV2_FUP1
34 10000000826 OV2_FUP2
35 10000000826 FUP1
36 10000000826 FUP2
37 10000000827 DEATH
38 10000000830 BC1
39 10000000830 DEATH
40 10000000844 LST_Mammo_EPI
所以我寫了一個函數來獲取數據的子集讓我們說具體的兩個事件之間的任何數據,每個人
node <- function(proxis, fulle, database){
result <- NULL
for (ID in unique(database$PERSON_ID)){
person <- subset(database, database$PERSON_ID == ID)
a <- which(person $EVENT == fulle)
if (length(a) == 0){
next} else {
person <- person[c(1:a),]
b <- which(person$EVENT == proxis)
if (length(b) == 0) {
next} else{
person <- person[c(b:a),]
a <- which(person$EVENT == "OV")
b <- which(person$EVENT == "BC1")
c <- which(person$EVENT == "BC2")
if (min(a,b,c) != 0) {next
}else{
result <- rbind(result,person)
}}}}
result
}
hello <- node("BC1","BC2",test)
但是這給了我NULL矩陣,當我沒有for循環特定的人進行測試,它正確地給了我BC1和BC2
我想someth之間的數據與結果矩陣的休息或分配錯誤... 任何人都可以提供見解?
這是什麼會拋出一個錯誤的預期產出? (min(a,b,c)!= 0)改變爲if(min(長度(a),長度(b),長度(c))!!= 0)固定( – mtoto
)。我需要這條線,因爲例如,當我需要BC1和BC2之間的行時,我不應該在BC1和BC2之間有事件OV。就像hello < - node(「BC1」,「BC2」,test) – jayinbluecity