首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取列表行中的第一个条目?

获取列表行中的第一个条目?
EN

Stack Overflow用户
提问于 2013-08-13 20:52:28
回答 3查看 5.7K关注 0票数 6

我有一个列表,有3个“列”:

代码语言:javascript
复制
test = list(1:100, 1:100,1:100)

例如,我如何访问每列的前10个条目?

代码语言:javascript
复制
test[c(1:10),]

不起作用。我知道它适用于data.frames:

代码语言:javascript
复制
as.data.frame(test)[1:10,1:3]

我怎么用列表解决这个问题呢?

编辑:要获得更一般的答案:

如何获取第1列和第3列中的条目15到20?下面是我为data.frames做的事情:

代码语言:javascript
复制
as.data.frame(test)[c(15:20),c(1,3)]

看起来data.frames和lists的索引有很大的不同。

EN

回答 3

Stack Overflow用户

发布于 2013-08-13 20:54:18

您可以使用函数lapply()head()来完成此操作。

代码语言:javascript
复制
lapply(test,head,n=10)
[[1]]
 [1]  1  2  3  4  5  6  7  8  9 10

[[2]]
 [1]  1  2  3  4  5  6  7  8  9 10

[[3]]
 [1]  1  2  3  4  5  6  7  8  9 10

如果列表元素中的值小于n=,则显示所有值。

代码语言:javascript
复制
test = list(1:100, 1:100,1:5)
lapply(test,head,n=10)
[[1]]
 [1]  1  2  3  4  5  6  7  8  9 10

[[2]]
 [1]  1  2  3  4  5  6  7  8  9 10

[[3]]
[1] 1 2 3 4 5
票数 12
EN

Stack Overflow用户

发布于 2013-08-13 20:54:22

根据您想要的返回类型,lapplysapply将非常有用。我会使用[来获取您想要的元素:

代码语言:javascript
复制
lapply( test , `[` , 1:10 )
[[1]]
 [1]  1  2  3  4  5  6  7  8  9 10

[[2]]
 [1]  1  2  3  4  5  6  7  8  9 10

[[3]]
 [1]  1  2  3  4  5  6  7  8  9 10

 sapply( test , `[` , 1:10 )
      [,1] [,2] [,3]
 [1,]    1    1    1
 [2,]    2    2    2
 [3,]    3    3    3
 [4,]    4    4    4
 [5,]    5    5    5
 [6,]    6    6    6
 [7,]    7    7    7
 [8,]    8    8    8
 [9,]    9    9    9
[10,]   10   10   10
票数 3
EN

Stack Overflow用户

发布于 2013-08-13 21:13:12

您可以使用Map函数,如果一个函数中有两个或两个以上的输入,该函数将非常有用:

代码语言:javascript
复制
mytest<-Map(function(x) x[1:10], test)
> mytest
[[1]]
 [1]  1  2  3  4  5  6  7  8  9 10

[[2]]
 [1]  1  2  3  4  5  6  7  8  9 10

[[3]]
 [1]  1  2  3  4  5  6  7  8  9 10
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18209648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档