R 中的重复列表名称
Duplicate list names in R
当 R 中有重复的列表名称时,这是怎么回事?
l <- list()
l[["A"]] <- 5
l[["B"]] <- 7
l[["C"]] <- 9
names(l) <- c("B", "B", "C")
键入 l[["B"]]
returns
$B
[1] 5
键入 l
returns
$B
[1] 5
$B
[1] 7
$C
[1] 9
当 "B" 重复时,是否有检索键 "B" 的所有值的标准方法?
当您有重名并按名称调用子集时,仅返回第一个元素。事实上,[[
只会给你一个元素,所以让我们看看 [
。
l["B"]
# $B
# [1] 5
我们还可以看到尝试 c("B", "B")
作为子集甚至不会给我们正确的结果,因为 R 返回并再次获得第一个 B
。
l[c("B", "B")]
# $B
# [1] 5
#
# $B
# [1] 5
检索所有 B
元素的最安全方法之一是使用 names()
向量的逻辑子集。这将为我们提供正确的元素。
l[names(l) == "B"]
# $B
# [1] 5
#
# $B
# [1] 7
这是一个很好的例子,说明为什么要避免重名。
当 R 中有重复的列表名称时,这是怎么回事?
l <- list()
l[["A"]] <- 5
l[["B"]] <- 7
l[["C"]] <- 9
names(l) <- c("B", "B", "C")
键入 l[["B"]]
returns
$B
[1] 5
键入 l
returns
$B
[1] 5
$B
[1] 7
$C
[1] 9
当 "B" 重复时,是否有检索键 "B" 的所有值的标准方法?
当您有重名并按名称调用子集时,仅返回第一个元素。事实上,[[
只会给你一个元素,所以让我们看看 [
。
l["B"]
# $B
# [1] 5
我们还可以看到尝试 c("B", "B")
作为子集甚至不会给我们正确的结果,因为 R 返回并再次获得第一个 B
。
l[c("B", "B")]
# $B
# [1] 5
#
# $B
# [1] 5
检索所有 B
元素的最安全方法之一是使用 names()
向量的逻辑子集。这将为我们提供正确的元素。
l[names(l) == "B"]
# $B
# [1] 5
#
# $B
# [1] 7
这是一个很好的例子,说明为什么要避免重名。