2015-10-22 54 views
0

为什么R中制作名单列表中的R

e=list(a,b,c,d) 

比不同:

e=list(a,b) 
e=list(e,c) 
e=list(e,d) 

第二种方法可以很容易地在for循环中使用,但它会产生不同的结果,并且每次迭代创建一个对象,所以不能使用第一种方法,任何提示?

+1

如果您试图连接两个列表,您应该使用'c(list1,list2)'而不是'list(list1,list2)''。第二种方法创建长度为2的列表(两个列表)。 – konvas

+1

在konvas的评论中展开你可能需要'c(e,list(c))'(如果c不是一个列表)等等,或者更好的是,分配一个长度为4的列表并且添加a,b,c和d在相应的e [[i]]中迭代 –

回答

1

如果你绝对要使用这种方法,你可以这样做:

# Make up some data 
a <- 1:3; b <- 4:5; c <- 6:10; d <- 11:17 

# Build up the lists 
e0 <- list(a, b, c, d) 
e <- list(a, b) 
e <- c(e, list(c)) 
e <- c(e, list(d)) 

# Compare the two 
identical(e0, e) # TRUE 

在现实生活中的案例,但是,而不是使用一个循环,你可能会使用函数从会更好*apply系列,例如lapply(),它将直接返回输出列表。