[問題] 篩選問題
各位好,我不知道這個命題怎麼寫但是它是關於篩選的問題
假如我有三個可篩選的向量
A 是 空白 老鼠 老虎
B 是 空白 小時候 長大
C 是 空白 卵生 胎生
我要做的是 假如A是空白 B也是空白 那就只篩
dat[c == 使用者輸入的值] 這樣
假如只有B是空白 那就變成
dat[A == 使用者輸入 & C == 使用者輸入]
不知道我這樣解釋會不會不太清楚
就跟一般網頁的用法一樣,空白的就忽略它
但是我寫不出類似的感覺,只能用很多if來包裝
我覺得這樣程式會很複雜,所以來請教
dat[A & B & C] 是我最想一次寫完的方式可是
B如果是空白的話,就會導致整個data都沒辦法出來
想請問有什麼更好的方法可以寫這個篩選呢
前提是一定要有空白這個,因為如果不加空白這個選項
預設就會是老虎或老鼠其中一個,可是假如使用者不想篩的話
會沒辦法使用,因為A一定會是老虎或老鼠其中一個而不是兩種都呈現
------------------------------
C大我在解釋一下,假如我有以下這個dataframe
食性 生育方式 生活地區
1 肉食 胎生 水生
2 草食 胎生 陸生
3 肉食 卵生 水生
4 雜食 胎生 兩棲
5 草食 胎生 兩棲
假如使用者讓 食性 生育方式 生活地區三者皆留白則呈現的就是上面這個表格
如果使用者這時候去拉了第一個select bar讓食性 == 肉食
那這時候只會剩下第一跟第三個row
他又去動了第二個select bar 讓生育方式 == 胎生
則只會留下第一個row
我目前是已經想出來大概的做法,只剩下最後一步我還在google
如果有大大能提示我怎麼做最理想不過了
這是我目前的作法
食性 <- ifelse(食性== "","","食性 == input$食性")
生育方式 <-ifelse(生育方式 == "","","生育方式 == input$生育方式")
生活地區 <-ifelse(生活地區 == "","","生活地區 == input$生活地區")
if (食性 == "" & 生育方式 == "" & 生活地區 == "") {
return(dat) } else {
picachu <- c(食性,生育方式,生活地區) %>% .[.! = ""] %>% paste(collapse = "&")
dat[picachu] %>% return
}
上面的是我的作法,缺的這一步就是data.table不接受character在他的argument裏頭
上面的就會變成dat["食性 == 肉食 & 生育方式 == 胎生"]
多了那兩個quote,請問有其他方法可以解決這整個問題或者是上面這個quote問題嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.172.86.77
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1480048497.A.812.html
→
11/25 14:20, , 1F
11/25 14:20, 1F
推
11/25 14:21, , 2F
11/25 14:21, 2F
※ 編輯: clansoda (1.172.86.77), 11/25/2016 15:00:42
→
11/25 15:18, , 3F
11/25 15:18, 3F
→
11/25 15:18, , 4F
11/25 15:18, 4F
→
11/25 17:17, , 5F
11/25 17:17, 5F
→
11/25 17:43, , 6F
11/25 17:43, 6F
→
11/25 17:44, , 7F
11/25 17:44, 7F
討論串 (同標題文章)
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章