如何将列表列表减少为仅包含符合特定条件的值?我已经看到了类似的问题,又看了看Filter,Reduce等,但似乎无法做什么工作.
> h = list(A=c(1, 2, 3), B=c(2, 3, 4), C=c(0, 1, 2))
> h
$A
[1] 1 2 3
$B
[1] 2 3 4
$C
[1] 0 1 2
Run Code Online (Sandbox Code Playgroud)
期望的输出:
> MagicFunction(h, element >= 3)
$A
[1] 3
$B
[1] 3 4
Run Code Online (Sandbox Code Playgroud)
你可以试试,
Filter(length, lapply(h, function(i)i[i>=3]))
#$A
#[1] 3
#$B
#[1] 3 4
Run Code Online (Sandbox Code Playgroud)
如果你有NA的元素,那么你可以na.omit用来删除那些.ie
h = list(A=c(1, 2, 3), B=c(2, 3, 4), C=c(0, 1, 2), D=NA)
Filter(length, lapply(h, function(i)na.omit(i[i>=3])))
#$A
#[1] 3
#$B
#[1] 3 4
Run Code Online (Sandbox Code Playgroud)
另一种选择是,
h = list(A=c(1, 2, 3), B=c(2, 3, 4), C=c(0, 1, 2), D=c(NA, 7))
Filter(length, lapply(h, function(i)(i[i >= 3 & !is.na(i)])))
#$A
#[1] 3
#$B
#[1] 3 4
#$D
#[1] 7
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |