R_U*_*ser 2 arrays types r vector
是否可以直接访问data.frame中的向量元素?
# DataFrame
nerv <- data.frame(
c(letters[1:10]),
c(1:10)
)
str(nerv)
# Accessing 5th element of the second variable/column
# This should give "5", but it does NOT work
nerv[2][5]
# Works, but I need to know the NAME of the column
nerv$c.1.10.[5]
Run Code Online (Sandbox Code Playgroud)
我尝试了几件事,但都没有奏效.我只有列的索引而不是名称,因为我想使用循环来交互几个列.
我似乎有一个基本的知识差距,我希望你能帮助我填补它.
Rei*_*son 12
你要:
> nerv[5,2]
[1] 5
Run Code Online (Sandbox Code Playgroud)
一般模式是对行[r, c]进行r索引,并c为要提取的列/变量编制索引.其中一个或两个都可能丢失,在这种情况下,它意味着给我所有没有索引的行/列.例如
> nerv[, 2] ## all rows, variable 2
[1] 1 2 3 4 5 6 7 8 9 10
> nerv[2, ] ## row 2, all variables
c.letters.1.10.. c.1.10.
2 b 2
Run Code Online (Sandbox Code Playgroud)
请注意,对于第一个,R已经删除了空维,从而产生了一个向量.要禁止此行为,请添加drop = FALSE到呼叫:
> nerv[, 2, drop = FALSE] ## all rows, variable 2
c.1.10.
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
Run Code Online (Sandbox Code Playgroud)
我们还可以使用列表样式表示法来提取数据框的组件.[将组件(列)提取为一列数据框,同时[[提取相同的内容但会丢弃尺寸.此行为来自列表上的常规行为,其中[返回列表,而[[返回索引组件内的事物.一些例子可能有帮助:
> nerv[2]
c.1.10.
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
> nerv[[2]]
[1] 1 2 3 4 5 6 7 8 9 10
> nerv[[1:2]]
[1] 2
Run Code Online (Sandbox Code Playgroud)
这也解释了为什么nerv[2][5]失败了.nerv[2]返回一个包含单个列的数据框,然后尝试从中检索第5列.
这样做的细节都包含在帮助文件?Extract.data.frame或?`[[.data.frame`