我很难理解双括号子集和单括号子集之间的区别。
我在开源编程方面相当陌生,我很难理解 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]) 将数据帧的子集分配给 tmp[1],这是列表的第一个槽。
为什么这需要双括号子集?