【发布时间】:2021-10-31 20:18:22
【问题描述】:
我试图弄清楚如何根据非 NA 的首次出现来对不同长度的小标题列表进行切片或子集化。我所有的小标题都具有不同的尺寸和许多 NA,但对所有人来说,共同点是它们在我需要删除的第一行中有一些 NA。
我只对删除前几行而保留所有后续行感兴趣。
我创建了一个可以说明我的数据的代表:
tbl <- tibble(
first = c(NA, 1, 2, 3, NA),
second = c(NA, 1, NA, 3, NA),
third = c(NA, 1, 2, NA, NA)
)
lst <- list(
list1 = tbl,
list2 = tbl,
list3 = tbl
)
lst
$list1
# A tibble: 5 x 3
first second third
<dbl> <dbl> <dbl>
1 NA NA NA
2 1 1 1
3 2 NA 2
4 3 3 NA
5 NA NA NA
$list2
# A tibble: 5 x 3
first second third
<dbl> <dbl> <dbl>
1 NA NA NA
2 1 1 1
3 2 NA 2
4 3 3 NA
5 NA NA NA
$list3
# A tibble: 5 x 3
first second third
<dbl> <dbl> <dbl>
1 NA NA NA
2 1 1 1
3 2 NA 2
4 3 3 NA
5 NA NA NA
我尝试将map() 与which.min() 和is.na() 结合使用,以尝试根据非NA 的第一个实例进行切片,但无法使其工作。
sliced <- map(lst, slice, which.min(is.na):nrow())
我得到的只是以下错误:
Error in which.min(is.na) :
cannot coerce type 'builtin' to vector of type 'double'
有没有办法解决这个问题?
【问题讨论】:
-
第一行可以是
NA, 2, 3吗?在这种情况下,输出会是什么? -
是的,对不起。子集/切片将仅由每个小标题的第一列决定。