簡體   English   中英

將3x3 data.frame轉換為1x9 data.frame,同時保留行和列名稱

[英]Turn 3x3 data.frame into 1x9 data.frame while preserving row and column names

對於這個看似簡單的數據處理問題,我很難提出一個優雅的解決方案。 我可以看到一個循環的解決方案,但我假設有一個1-2函數的單行解決方案。

這是我所擁有的:

x <- data.frame(c1=c(1,2,3),
                c2=c(4,5,6),
                c3=c(7,8,9),
                row.names = c("r1","r2","r3"))

> x
   c1 c2 c3
r1  1  4  7
r2  2  5  8
r3  3  6  9

這就是我想要的:

> y
     c1.r1 c1.r2 c1.r3 c2.r1 c2.r2 c2.r3 c3.r1 c3.r2 c3.r3
1    1     2     3     4     5     6     7     8     9

如何操縱x給我y

這是一種實現方法:

R> unlist(lapply(x, setNames, rownames(x)))
c1.r1 c1.r2 c1.r3 c2.r1 c2.r2 c2.r3 c3.r1 c3.r2 c3.r3 
    1     2     3     4     5     6     7     8     9

data.frame是一個列表,因此lapply只是在列上循環。 然后將每個向量的名稱rownames的data.frame的。 然后unlist列表將列表unlist為向量(默認情況下,遞歸設置名稱)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM