簡體   English   中英

有條件地替換 R 中列表列表中的特定值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM