[英]Conditionally replacing specific values from a list of lists in R
試圖尋找一個類似的問題,因為我認為之前可能有人問過這個問題,但我沒能做到,所以就到這里了。
我的數據集中有一個列表列表,其中包含字符。 例如:
data$list_items[1]
[[1]]
[1] "633" "0"
data$list_items[2]
[[1]]
[1] "0"
data$list_items[3]
[[1]]
[1] "0" "357" "-1" "A21"
等等。 它們是數字,但它們存儲為字符,因為某些項目代碼中包含字母。 所有行都至少包含“0”,這就像我合並以構成列表列表的列中 NA 的填充符,而某些列表還包含“-1”,這僅表示未定義。
我基本上只是想擺脫“0”和“-1”元素,並用字母“NA”替換那些可能最終變成空集的剩余行。
我使用 for 循環通過將它們全部替換為“NA”然后刪除重復項並從所有長度> 1 的列表中刪除“NA”來完成此操作,但是有沒有辦法使用這樣的應用函數之一? 我被困在空列表被替換為“NA”的步驟
例如,在我展示的 3 個案例中,我的最終結果是:
data$list_items[1]
[[1]]
[1] "633"
data$list_items[2]
[[1]]
[1] "NA"
data$list_items[3]
[[1]]
[1] "357" "A21"
您可以嘗試使用lapply
-
data$list_items <- lapply(data$list_items, function(x) {
#Drop 0 and -1 value
x <- x[!x %in% c(0, -1)]
#If empty return NA
if(length(x)) x else NA
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.