首页 > 解决方案 > 替换R中列表列表中的值

问题描述

我有一个包含列名的列表列表,并且正在尝试替换列的值。我的列表包含所有称为all_lists看起来的列表:

[[1]]
       preds     ground_truth
19221  0.0566264            1
6587   0.0567813            0
3981   0.0569643            0
16956  0.0570841            1
2344   0.0570878            1
2855   0.0571354            1

[[2]]
       preds     ground_truth
17326  0.7525393            0
26342  0.7586699            1
15996  0.7703387            1
14033  0.7738193            0
3403   0.7838794            1
20626  0.8009424            1
16675  0.8294433            1

[[3]]
[1] preds   ground_truth
<0 rows> (or 0-length row.names)

我试图让preds0.5 及以上的列中的所有值都为 1,所有小于 0.5 的值都为 0。我的解决方案尝试是这样的:

for (lists in all_lists){
  lists[preds] <- ifelse(lists[preds] > 0.5, 1, 0)
}

但是我收到以下错误:

Error in matrix(unlist(value, recursive = FALSE, use.names = FALSE), nrow = nr,  : 
  'data' must be of a vector type, was 'NULL'

有谁知道如何解决这一问题?谢谢

标签: rlist

解决方案


您可以round在以下列predsall_lists

all_lists <- lapply(all_lists, function(x) {
  x$preds = round(x$preds)
  #If your data can go above 1
  #x$preds = as.integer(x$preds > 0.5)
  x
})

推荐阅读