我想获取一个列表,创建一个列表项名称的字符串向量,用通用名称填充空格,然后将名称向量设置为列表的名称。
我的代码适用于没有名称的项目的列表。但是,当其中有带有名称的项目时,它什么也不做。
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)
}
Run Code Online (Sandbox Code Playgroud)
结果没有命名项目
$item1
[1] 2 3 4
$item2
[1] "hey" "ho"
Run Code Online (Sandbox Code Playgroud)
结果与命名项目
[[1]]
[1] 2 3 4
[[2]]
[1] "hey" "ho"
$hello
[1] 2 3 4
Run Code Online (Sandbox Code Playgroud)
希望你能帮忙。
听起来您想在当前没有名称的地方插入名称。如果是这种情况,我建议使用直接赋值 via 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"
Run Code Online (Sandbox Code Playgroud)
我们可以使用以下内容将名称插入到空名称元素中。这也适用于向量,前提是右侧向量与左侧向量的长度相同。
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
Run Code Online (Sandbox Code Playgroud)
对于包含零星空名称的较长列表,您可以使用
names(list)[!nzchar(names(list))] <- namesToAdd
Run Code Online (Sandbox Code Playgroud)
nzchar 基本上表示“非零字符”,如果元素是非零长度字符串,则返回逻辑值 TRUE。
| 归档时间: |
|
| 查看次数: |
8924 次 |
| 最近记录: |