2013-06-04 216 views
0

在我看來,這應該是很簡單的,但....我想從一個數據幀創建一組數據幀的

 a <- 5 
    b <- 1:a 
    c <- matrix(rnorm(30, 1), ncol = 5) 
    out <- lapply(c,c[,i]) 

    Error in c[, i] : invalid subscript type 'list' 

我想打破數據幀到其列,並有一組的新數據較小的框架,每列一個

我無法弄清楚我要去哪裏錯了。總是非常感謝幫助。

回答

1

也許這樣的事情?我想,你只需要在您的通話lappy上定義一個匿名函數

a <- 5 
b <- 1:a 
c <- as.data.frame(matrix(rnorm(30, 1), ncol = 5)) 
out <- lapply(c, function(i) data.frame(i)) 
+0

完美!謝謝你,諾亞。 –

+0

lapply(c,data.frame) – user20650

2

因此,您希望將數據幀分成多個數據幀,每個數據幀一個。你確定你要這麼做嗎?當人們想要知道如何遍歷一堆對象時,有很多問題,當他們更好地將所有這些對象包裝到列表或類似的數據結構中時。請注意,數據框基本上只是一列列。

有了這樣的方式....

d <- as.data.frame(matrix(rnorm(30), ncol=5)) 
for(i in seq_len(ncol(d))) { 
    name <- names(d)[i] 
    assign(name, d[[i]]) 
} 
+0

好的謝謝你的評論,我會認爲,仔細地,因爲我認爲你是對的。代碼的作品,但我仍然最終有一個矩陣,有五列。我沒有解釋我需要什麼,我猜。 –

+0

修復了一些故障。此外,這實際上將列保存爲向量,而不是像這樣的數據幀。 –