2015-10-22 53 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(),它將直接返回輸出列表。