理解语法[[a,b,c]]困难(在igraph中)

问题描述 投票:0回答:1

我是R的新手,我刚遇到了这个例子:

library(igraph)
library(sand)
data(USairports)
USairports[["BOS", "JFK", edges = TRUE]]

[[]]在此示例中如何工作?据我所知,[[]]用于访问列表中的单个元素,但是为什么我们要传递3个参数呢?它看起来像矩阵/函数。谢谢。

r igraph
1个回答
0
投票

这是一个非常好的问题!

您确实可以在此处使用更多的索引和参数。

数据帧

[当您引用数据框的行和列时,双括号将删除最终名称,并允许您仅选择单个元素。

例如对于数据帧,您可以同时使用:

mtcars[2, 3]
mtcars[[2, 3]]

但是:

# OK
mtcars[2:3, 3:4]
#               disp  hp
# Mazda RX4 Wag  160 110
# Datsun 710     108  93

# NOT WORKING
mtcars[[2:3, 3:4]]
# Error in col[[i, exact = exact]] : 
#   attempt to select more than one element in vectorIndex

可以在双方括号中传递其他参数,请参阅documentation或在R控制台中键入?"[["

列表

对于列表,您可以使用一个索引来引用列表的元素。

data <- as.list(mtcars)
data[[1]]
# or:
data[["mpg"]]
data$mpg

(请参阅documentation或在R控制台中键入?"[["。]

igraph

但是,对于USairports,您正在使用特殊的igraph类,它是一种列表类型,其工作方式略有不同(您可以使用更多索引,例如edges属性是igraph特有的。

© www.soinside.com 2019 - 2024. All rights reserved.