我想要一个函数is_named_list(lst)
,如果列表中的所有元素都有名称,则返回true,否则返回false。在列表为空的情况下,它应该返回false。在尝试编写这样的函数时,我需要考虑哪些因素。例如,对于names
函数,没有名称的列表与名称不完整的列表的行为不同:
> tmp_list <- list(a = 1, b = 2, 3)
> names(tmp_list)
[1] "a" "b" "" # empty string for unnamed third element
> tmp_list <- list(1, 2, 3)
> names(tmp_list)
NULL # null value when no elements have names.
答案 0 :(得分:3)
只需将列表的长度(length(tmp_list)
)与该列表的名称向量的长度(length(names(tmp_list))
)进行比较,其中名称不为空字符串。
all_names <- function(list) {
return(length(list) == sum(names(list) != "", na.rm=TRUE))
}
> all_names(tmp_list)
[1] FALSE
答案 1 :(得分:0)
我们可以尝试
is_named_list <- function(lst) {
!(is.null(names(lst))|any(!nzchar(names(lst))))
}
is_named_list(tmp_list)
#[1] FALSE
和第二个例子
tmp_list <- list(1, 2, 3)
is_named_list(tmp_list)
#[1] FALSE
答案 2 :(得分:0)
awk -v OFS="\t" 'BEGIN{print "ID\tcol1\tcol2"}NR>1{print (NR-1),$1,$2}' inputfile
ID col1 col2
1 t y
2 g h
3 g k
4 j o