如何在 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

更新于: 2020年8月12日

2K+ 阅读量

启动您的 职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.