我知道我可以像这样修改矢量的子集:
v1 = c(3, NaN, 5)
v1[is.nan(v1)] = 0 # change NaN values to 0
现在,是否可以对列表中的所有向量执行此操作,而不必循环到每个元素中?
lst1 <- list('v1'=c(1,NaN,3), 'v2'=c(3,2,NaN), 'v3'=c(NaN,1,3))
类似的东西:
lst1[[*]][is.nan(lst1[[*]])] = 0
我认为这可以通过循环中的向量迭代来解决,但我想知道是否有更好的方法来解决这个问题。
答案 0 :(得分:2)
如果我们感兴趣的是没有循环,那么JQueryUI
unlist
元素,一次性执行list
并replace
relist
答案 1 :(得分:1)
一种可能的解决方案是使用lapply
。它基本上迭代了向量,但比使用for循环稍微好一些。
lapply(lst1, function(x) {x[is.na(x)]<-0;x})
输出:
$v1
[1] 1 0 3
$v2
[1] 3 2 0
$v3
[1] 0 1 3