R可能有自己的loigc,但list()并没有给我我所期望的.

l1 <- list(1,2)
$> l1
[[1]]
[1] 1

[[2]]
[1] 2

要检索元素,我需要使用双括号,即.,

$> l1[[1]]
[1] 1
$> class(l1[[1]])
"numeric"

单括号为我提供了一个子列表(也是一个列表对象):

$> l1[1]
l1[[1]]
[1] 1
$> class(l1[1])
"list"

我并不是说这是错误的;这不是我所期望的,因为我试图创建一个一维列表,而实际上我得到的是一个嵌套列表,一个二维对象.

这种行为背后的逻辑是什么?我们如何创建OO类型列表?i、 例如,一维数据 struct ?

对于一维数据 struct ,我期望的行为是:

$> l1[1]
[1] 1
$> l1[2]
[2] 2

推荐答案

如果您想在一个元素中创建一个包含两个数字的列表,请查找以下内容:

l1 <- list(c(1, 2))
l1
#> [[1]]
#> [1] 1 2

你的代码基本上将两个长度为1的向量放入一个列表中.为了让R明白你只有一个向量,你需要先把(c())个值组合成一个向量.

当我们首先创建两个向量作为对象时,这一点可能会变得更清楚:

v1 <- 1
v2 <- 2
l2 <- list(v1, v2)
l2
#> [[1]]
#> [1] 1
#> 
#> [[2]]
#> [1] 2

如果只想将这两个值存储在一个对象中,则需要一个向量:

l1 <- c(1, 2)
l1
#> [1] 1 2

关于R中不同数据 struct 的更多信息,我推荐本章:http://adv-r.had.co.nz/Data-structures.html

关于[[[索引的问题,请看一下这个classic 答案:https://stackoverflow.com/a/1169495/5028841

R相关问答推荐

如何判断某列中由某些行组成的百分比

使用R中的gt对R中的html rmarkdown文件进行条件格式设置表的单元格

如何使用R Shiny中的条件面板仅隐藏和显示用户输入,同时仍允许运行基础计算?

如何在R中合并和合并多个rabrame?

二维样条,严格以一个参数递增

计算时间段的ECDF(R)

在数组索引上复制矩阵时出错

SHINY:使用JS函数应用的CSS样式显示HTML表格

方法::slotName如何处理非类、非字符的参数?

如何在R中通过多个变量创建交叉表?

将向量元素重新排序为R中的第二个

R中时间间隔的大向量与参考时间间隔的相交

如何构建一个for循环来循环处理动物ID?

如何在GALT包的函数&geom_x样条线中调整线宽

整理ggmosaic图的标签

如何使用grepl()在数据帧列表中 Select 特定字符串?

按两个条件自动过滤数据

从两个数据帧中,有没有办法计算R中一列的唯一值?

创建两个变量组合的索引矩阵

在shiny /bslb中,当卡片是从json生成时,如何水平排列卡片?