我有一个列表,有3个“列”:
test = list(1:100, 1:100,1:100)例如,我如何访问每列的前10个条目?
test[c(1:10),]不起作用。我知道它适用于data.frames:
as.data.frame(test)[1:10,1:3]我怎么用列表解决这个问题呢?
编辑:要获得更一般的答案:
如何获取第1列和第3列中的条目15到20?下面是我为data.frames做的事情:
as.data.frame(test)[c(15:20),c(1,3)]看起来data.frames和lists的索引有很大的不同。
发布于 2013-08-13 20:54:18
您可以使用函数lapply()和head()来完成此操作。
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=,则显示所有值。
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发布于 2013-08-13 20:54:22
根据您想要的返回类型,lapply或sapply将非常有用。我会使用[来获取您想要的元素:
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发布于 2013-08-13 21:13:12
您可以使用Map函数,如果一个函数中有两个或两个以上的输入,该函数将非常有用:
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 10https://stackoverflow.com/questions/18209648
复制相似问题