难以理解R中双括号和单括号子集之间的区别

时间:2017-10-03 09:24:08

标签: r

我很难理解双括号子集和单括号子集之间的区别。

我在开源编程方面相当新,而且我很难理解R中的?help函数,因为我现在对R的理解,对于我来说有些信息太技术了。我试过谷歌搜索差异,虽然它给了我一个想法,我仍然不完全理解差异,特别是在这个例子中我将在下面使用。

我想要了解的是在这个特定代码中如何使用双括号子集:

tmp <- vector(mode = "list", length = 10)
listall <- list.files("specdata", full.names = TRUE)
tmp[[1]] <- read.csv(listall[[1]])

listall [1]包含以下数据框:

  Date       sulfate nitrate ID
1 1/1/2003       1      10   1
2 1/2/2003       2      11   1
3 1/3/2003       3      12   1
4 1/4/2003       4      13   1
5 1/5/2003       5      14   1
6 1/6/2003       6      15   1
7 1/7/2003       7      16   1
8 1/8/2003       8      17   1
9 1/9/2003       9      18   1

确实如此,遵循上面的双括号子集代码会将数据帧放在列表tmp [1]的第一个插槽中。

为什么我必须使用双括号子集来放置该数据帧? 单个括号子集不会这样做吗?

 tmp[1] <- read.csv(listall[1])

运行此代码将产生警告消息:

Warning message:
In tmp[1] <- read.csv(listall[1]) :
number of items to replace is not a multiple of replacement length

并且运行tmp [1]将产生如下所示的混合数据框:

[[1]]
[1] 1/1/2003 1/2/2003 1/3/2003 1/4/2003 1/5/2003 1/6/2003 1/7/2003 1/8/2003 1/9/2003
Levels: 1/1/2003 1/2/2003 1/3/2003 1/4/2003 1/5/2003 1/6/2003 1/7/2003 1/8/2003 1/9/2003

有人可以解释为什么它会显示这样的警告信息以及为什么数据框都混淆了?

从我对子集化的有限理解。分配read.csv(listall [1])将DATA FRAME子集设置为tmp [1],这是列表的第一个插槽。

为什么这需要双括号子集?

0 个答案:

没有答案