如何使用R语言$符号从矩阵中提取列

时间:2015-11-06 20:29:11

标签: r

我是R语言的新手,如果我使用Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4 at tar0.main(tar0.java:17)我可以获得相应的数据动物园。 resB是一个包含以下元素的列表。库是 zoo ,这是us_stocks的类型

us_stocks$"LNC"

但是在使用resB # [[1]] LNC 7 # [[2]] GAM 62 # [[3]] CMA 7 class(resB) # [1] "list" names(resB[[1]]) # [1] "LNC" 时我无法获得动物园系列?如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

通常需要一段时间才能理解“...... $是一个不评估其第二个参数的函数。”大多数R函数将采用names(resB[[1]])和eval;使用它然后对值进行操作。但不是$。它期望第二个参数是一个实际的列名,但是作为一个不带引号的字符串给出。这是“非标准评估”的一个例子。您还将看到它在函数libraryhelp中运行,以及许多函数,这些函数可能与hadleyverse一样轻率,包括包'ggplot2'和'dplyr'。数据帧列的名称或R列表的节点是字符文字,但是,它们实际上不是R names,因为它们的值无法使用在控制台上键入的不带引号的字母序列来访问它们的值。 R上。

如前所述,您应该使用d[[ names(resB[[1]]) ]]。这在编程中使用起来也更加安全,因为除了交互式控制台使用之外的其他任何事情中使用$ - 函数时,通常存在问题。