我是R的新手,我刚遇到了这个例子:
library(igraph)
library(sand)
data(USairports)
USairports[["BOS", "JFK", edges = TRUE]]
[[]]
在此示例中如何工作?据我所知,[[]]
用于访问列表中的单个元素,但是为什么我们要传递3个参数呢?它看起来像矩阵/函数。谢谢。
这是一个非常好的问题!
您确实可以在此处使用更多的索引和参数。
[当您引用数据框的行和列时,双括号将删除最终名称,并允许您仅选择单个元素。
例如对于数据帧,您可以同时使用:
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控制台中键入?"[["
。]
但是,对于USairports
,您正在使用特殊的igraph
类,它是一种列表类型,其工作方式略有不同(您可以使用更多索引,例如edges
属性是igraph特有的。