我想要获取一个列表,创建一个包含列表项名称的字符串向量,用通用名称填充空格,然后将名称向量设置为列表的名称。
我的代码适用于没有名字的list。但是,当其中有带有名称的项时,它什么也不做。
addNamesToList <- function(myList){
listNames <- vector()
for(i in 1:length(myList)){
if(identical(names(myList[i]),NULL)){
listNames <- c(listNames,paste("item",i,sep=""))
}else{
listNames <- c(listNames,names(myList[i]))
}
}
names(myList) <- listNames
return (myList)
}
没有命名项的结果
$item1
[1] 2 3 4
$item2
[1] "hey" "ho"
已命名项目的结果
[[1]]
[1] 2 3 4
[[2]]
[1] "hey" "ho"
$hello
[1] 2 3 4
希望你能帮上忙。
发布于 2014-07-09 17:29:00
听起来您想要在当前没有名称的地方插入名称。如果是这样,我建议使用通过names(x) <- value
的直接赋值,而不是使用循环来填充空格。
在下面的示例中,lst
创建了一个包含三个元素的示例列表,其中第二个元素未命名。请注意,即使列表元素中只有一个元素有名称,它的names
向量也是一个长度与lst
相同的字符向量。
( lst <- list(item1 = 1:5, 6:10, item3 = 11:15) )
# $item1
# [1] 1 2 3 4 5
#
# [[2]]
# [1] 6 7 8 9 10
#
# $item3
# [1] 11 12 13 14 15
names(lst)
# [1] "item1" "" "item3"
我们可以用下面的代码将一个名字插入到空的name元素中。这也适用于向量,只要右侧向量与左侧向量的长度相同。
names(lst)[2] <- "item2"
lst
# $item1
# [1] 1 2 3 4 5
#
# $item2
# [1] 6 7 8 9 10
#
# $item3
# [1] 11 12 13 14 15
对于包含零星空名的较长列表,您可以使用
names(list)[!nzchar(names(list))] <- namesToAdd
nzchar
基本上表示“非零字符”,如果元素是非零长度的字符串,则返回一个逻辑TRUE。
https://stackoverflow.com/questions/24659680
复制相似问题