大佬教程收集整理的这篇文章主要介绍了在 R 列表中用 0 替换 numeric(0),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个清单:
@H_514_5@myList $`0` $`0`$item1 numeric(0) $`0`$item2 [1] 350 $`0`$item3 numeric(0) $`1` $`1`$item1 numeric(0) $`1`$item2 [1] 56 $`1`$item3 numeric(0)
我在此列表中使用了 sapply 函数,但出现错误:
参数的“类型”(列表)无效
如何像其他项目一样将所有 numeric(0)
转换为 0?
假设您只有 1 个深度列表,这是最短的解决方案
@H_514_5@my_list[lengths(my_list) == 0] <- 0
对于2个深度列表
@H_514_5@my_list <- lapply(my_list,function(X)x[lengths(X) == 0] <- 0),
如果深度未知或不相等,您可以使用递归函数:
f <- function(X) {
if(is.list(X)) lapply(x,f)
else ifelse(length(X) == 0,X)
}
f(myList)
#$`0`
#$`0`$item1
#[1] 0
#
#$`0`$item2
#[1] 350
#
#$`0`$item3
#[1] 0
#
#
#$`1`
#$`1`$item1
#[1] 0
#
#$`1`$item2
#[1] 56
#
#$`1`$item3
#[1] 0
#
#
#$`2`
#[1] 4
#
#$`3`
#[1] 0
数据:
@H_514_5@myList <- list(`0` = list(item1 = numeric(0),item2 = 350,item3 = numeric(0)),`1` = list(item1 = numeric(0),item2 = 56,`2` = 4,`3` = numeric(0)),
purrr
的{{1}}@H_514_5@modify()
newList <- purrr::modify(myList,~ if(length(.) == 0){
0
} else { . })
base::lapply
,
使用嵌套的 lapply
lapply(my_list,function(X) lapply(x,function(X) ifelse(length(X) == 0,X)))
$`0`
$`0`$item1
[1] 0
$`0`$item2
[1] 350
$`0`$item3
[1] 0
$`1`
$`1`$item1
[1] 0
$`1`$item2
[1] 56
$`1`$item3
[1] 0
或sapply
内的lapply
lapply(my_list,function(X) sapply(x,X)))
$`0`
item1 item2 item3
0 350 0
$`1`
item1 item2 item3
0 56 0
或在内部和外部都使用 sapply
sapply(my_list,X)))
0 1
item1 0 0
item2 350 56
item3 0 0
在名单上
@H_514_5@my_list <- list(`0` = list(item1 = numeric(0),item3 = numeric(0)))
以上是大佬教程为你收集整理的在 R 列表中用 0 替换 numeric(0)全部内容,希望文章能够帮你解决在 R 列表中用 0 替换 numeric(0)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。