2013-07-08 17 views
0

所以基本上我有一個名爲「參數」的值(x1,x2,...,xj)。我想通過一個for循環,列出這個列表的子集,但每次都省略一個元素。例如,我希望第一個子集(通過for循環的第一次迭代)爲(x2,x3,...,xj),其次是(x1,x3,...,xj)等等直到最後一個將是(x1,x2,...,xj-1)的子集。我該怎麼做呢?如何通過選擇列表中除了一個值之外的所有元素來對R中的列表進行子集劃分?

回答

2

我假設你的意思是「列表」vector。如果是這樣的:

parameters <- rnorm(100) 
y <- matrix(nrow=length(parameters)-1,ncol=length(parameters)) 
for(i in 1:length(parameters)) 
    y[,i] <- parameters[-i] 

如果「清單」,實際上指的是list,代碼基本上是相同的,但只是做parameters <- unlist(parameters)第一。

5

這可能是有用的

> Vector <- paste("x", 1:6, sep="") 
> lapply(1:length(Vector), function(i) Vector[-i]) 
0

以防萬一你要使用的數據留一出折刀,在這裏一個快速指向bootstrap包和一個簡單的例子

library(bootstrap) 
vec_list=list() 
jackknife(rnorm(10,0,1),function(x) {vec_list[[length(vec_list)+1]]<<-x;mean(x)}) 
vec_list[1:10] 
0

您可以通過列表中的元素來列出元素的子集。

從列表中選擇項目1和3

my.list[c(1,3))] 

試試這個:

# create a dummy list of data frames 
d1 <- data.frame(y1=c(1,2,3),y2=c(4,5,6)) 
d2 <- data.frame(y1=c(3,2,1),y2=c(6,5,4)) 
d3 <- data.frame(y1=c(3,2,1),y2=c(9,8,7)) 
my.list <- list(d1, d2, d3) 

# get the items 1 and 3 
my.list[c(1,3)] 

# get the all element except of the first one 
my.list[c(-1)] 
相關問題