5

所以基本上我有一个名为“参数”的列表,其中包含值(x1,x2,...,xj)。我想通过 for 循环对该列表进行子集化,但每次都省略一个元素。因此,例如,我希望第一个子集(通过 for 循环的第一次迭代)是(x2,x3,...,xj),下一个是(x1,x3,...,xj)等等on,直到最后一个子集是 (x1, x2, ... , xj-1)。我该怎么做呢?

4

4 回答 4

7

这可能很有用

> Vector <- paste("x", 1:6, sep="")
> lapply(1:length(Vector), function(i) Vector[-i])
于 2013-07-08T14:02:20.613 回答
2

我假设您的意思是“列表” vector。如果是这样:

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

如果通过“列表”,您实际上是指 a list,代码基本相同,但先做parameters <- unlist(parameters)

于 2013-07-08T13:59:21.257 回答
1

您可以通过指示它们在列表中的顺序来对列表中的元素进行子集化。

从列表中选择项目 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)]
于 2017-06-08T14:43:17.887 回答
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]
于 2013-07-08T19:59:23.307 回答