2013-07-17 37 views
-1

我有一個數據幀說「一」如何通過組合R中的數據幀的行來創建向量?

qq ee rr tt 
1 2 3 4 
2 44 66 77 
9 0 0 4 

我想創建一個像向量:

vec <- c(1,2,3,4,2,44,66,77,9,0,0,4) 

我該怎麼做呢?

+0

你是否以你自己的名義進行Google搜索/搜索? –

+3

即使是最差的R程序員也應該知道這可以通過i = cols和j = rows上的雙循環完成。這可能不是最好的方式,但它至少會告訴我們你有一定的能力。 – Spacedman

回答

3

採取t ranspose也將其轉換爲一個matrix,然後轉換爲vector

as.vector(t(a)) 
[1] 1 2 3 4 2 44 66 77 9 0 0 4 
+0

或只是'c(t(a))' – johannes

+0

@jmsigner,這是使用'c'的副作用,而不是'as.vector',我發現它更透明。 – A5C1D2H2I1M1N2O1R2T1

+0

裏普利教授有個引用,你不應該用'c'來表示副作用。這不是「財富」嗎? – Roland

0

爲了好玩,這裏是另一種選擇:

> scan(textConnection(do.call(paste, a))) 
Read 12 items 
[1] 1 2 3 4 2 44 66 77 9 0 0 4 

其中, 「一」 是:

a <- read.table(textConnection("qq ee rr tt 
1 2 3 4 
2 44 66 77 
9 0 0 4"), header=T) 
2

使用詹姆斯的答案。

這裏是另一種選擇:unlist和排序。

unlist(a)[order(rep(seq_len(nrow(a)),ncol(a)))] 
#qq1 ee1 rr1 tt1 qq2 ee2 rr2 tt2 qq3 ee3 rr3 tt3 
# 1 2 3 4 2 44 66 77 9 0 0 4 

這樣你可以保留名稱中的信息,這可能是有用的。如果您不想要名稱,請使用unlistuse.names=FALSE

+0

+1啊,這回答我的問題 –

+0

你只需35分鐘就能擊敗我! – Arun