介绍
“[“, $和@都可以根据索引取值,但是它们使用范围不一样。
"["
是按索引取值,或者名称取值,返回结果不改变数据类型;
$经常用于list和data.frame中,以及S3对象中,采用模糊配合的模式从对象中取值;
[[]]也是根据索引或者名称取值,和$使用的对象一样,X[[‘a’,exact=FALSE]]和X$a是等价的。
@是针对S4对象进行取值的。
"["用法
"["(x,n)
参数介绍:
x: 具有索引值的对象,如vector,list
n: 是一个整数或者字符串
h=data.frame(abc=c(5,6))
'['(h,'abc')
# abc
# 1 5
# 2 6
'['(h,1)
# abc
# 1 5
# 2 6
$和[[]]的用法
x <- list(abc = 1)
x$a
# [1] 1
h=data.frame(abc=c(5,6))
h$a
# [1] 5 6
h[['a',exact=FALSE]]
# [1] 5
注意从大数据的计算效率来看,[[]]的运算效率更高、
@的用法
library(ROCR)
data(ROCR.simple)
pred <- prediction( ROCR.simple$predictions, ROCR.simple$labels)
performance(pred,'auc')@y.values
# [[1]]
# [1] 0.8341875
[…, drop]的用法
[…, drop]是一种用于取子集的语法。默认情况下,当您从矩阵或数据框中选择单个行或列时,R 会将结果简化为向量。但是,参数drop=FALSE时,就会将一行或一列保持矩阵结构。
# 创建一个示例矩阵
mat <- matrix(1:12, nrow = 4, ncol = 3)
print(mat)
# [,1] [,2] [,3]
# [1,] 1 5 9
# [2,] 2 6 10
# [3,] 3 7 11
# [4,] 4 8 12
# 选择第二行,使用 drop = FALSE
result <- mat[2, , drop = FALSE]
print(result)
# [,1] [,2] [,3]
# [1,] 2 6 10
result <- mat[2, , drop = TRUE]
print(result)
# [1] 2 6 10
#此时结果为向量不是矩阵了。