如何处理R中的错误“ $运算符对于原子向量无效”?
发生此错误的原因是$运算符不是设计用来访问向量元素的。如果我们使用$运算符来访问向量元素,则R无法理解它并认为它是无效的,因此,对于使用$运算符的位置,我们必须非常小心。当我们给元素命名并开始考虑将它们视为数据框列时,就会发生这种情况,这是错误的方法。要访问向量元素,应使用单个方括号。
示例
考虑下面的向量-
> set.seed(1) > x1<-sample(1:10,20,replace=TRUE) > x1 [1] 9 4 7 1 2 7 2 3 1 5 5 10 6 10 7 9 5 5 9 9 > names(x1)<-LETTERS[1:20] > x1 A B C D E F G H I J K L M N O P Q R S T 9 4 7 1 2 7 2 3 1 5 5 10 6 10 7 9 5 5 9 9 > x1$K Error in x1$K : $ operator is invalid for atomic vectors
在这里,我们得到的错误是“$运算符对于原子向量无效”。现在,我们应该使用单个方括号访问向量x1的元素,如下所示-
> x1["K"] K 5 > x1["T"] T 9 > x1["A"] A 9 > x1[1] A 9
让我们再看一个例子-
> x2<-sample(1:100,10)
> x2
[1] 37 34 89 44 79 33 84 35 70 74
> names(x2)<-c("A1","A2","A3","A4","A5","A6","A7","A8","A9","A10")
> x2
A1 A2 A3 A4 A5 A6 A7 A8 A9 A10
37 34 89 44 79 33 84 35 70 74
> x2["A10"]
A10
74
> x2["A5"]
A5
79
> x2["A6"]
A6
33
> x2["A1"]
A1
37
> x2["A3"]
A3
89