假设我有一个向量x
,其元素我想用于从矩阵或数据框M
中提取列。
如果x[1] = "A"
,我无法使用M$x[1]
提取标题名称为A
的列,因为M$A
被识别而M$"A"
未被识别。如何删除引号,以便在此实例中M$x[1]
为M$A
而不是M$"A"
?
答案 0 :(得分:2)
在这种情况下不要使用$
;请改用[
。这是一个最小的例子(如果我理解你正在尝试做什么)。
mydf <- data.frame(A = 1:2, B = 3:4)
mydf
# A B
# 1 1 3
# 2 2 4
x <- c("A", "B")
x
# [1] "A" "B"
mydf[, x[1]] ## As a vector
# [1] 1 2
mydf[, x[1], drop = FALSE] ## As a single column `data.frame`
# A
# 1 1
# 2 2
我想你会在R Inferno中找到答案。从第8圈开始:&#34;相信它按预期进行&#34;,其中一个&#34;字符串而不是名称&#34;子部分....您也可以在The main difference is that $ does not allow computed indices, whereas [[ does.
的帮助页面的 ?Extract
行中找到一些解释。
请注意,采用这种方法是因为使用从矩阵或数据框中提取列的方法指定的问题,在这种情况下,[row, column]
提取模式实际上是这样的无论如何($
方法不适用于matrix
)。