簡體   English   中英

使用向量名稱作為列將向量合並到數據框中

[英]Combine vectors into data frame, using vector name as a column

library(dplyr)

我有一組向量:

Sp_A <- c("A",1,2,3,4,5,6,7,8)
Sp_B <- c("B",9,10,11,12,13,14,15,16)
Sp_C <- c("C",17,18,19,20,21,22,23,24)

我將其制成向量列表:

list <- ls(pattern = "Sp_")

我想使用此列表來循環遍歷列表中的每個向量,並將其變成數據框。 我目前對此使用一個矢量進行此操作:

A_df <- select(data.frame(rep(Sp_A[1], each = 4), c(Sp_A[c(2,4,6,8)]), c(Sp_A[c(3,5,7,9)])), name = 1, var1 = 2, var2 = 3)

我試圖使此操作成為如下的for循環:

for(i in list) {
    test[i] <- select(A_df <- data.frame(rep(i[1], each = 4),
                      c(i[c(2,4,6,8)]), 
                      c(i[c(3,5,7,9)]), 
                      name = 1, var1 = 2, var2 = 3))
}

但無濟於事。

我聽說我可以對此類事情使用apply() ,但我不知道如何做。

也許這樣:

lapply(list,function(x) data.frame(name=get(x)[1],matrix(get(x)[-1],ncol = 2)))

[[1]]
  name X1 X2
1    A  1  5
2    A  2  6
3    A  3  7
4    A  4  8

[[2]]
  name X1 X2
1    B  9 13
2    B 10 14
3    B 11 15
4    B 12 16

[[3]]
  name X1 X2
1    C 17 21
2    C 18 22
3    C 19 23
4    C 20 24

或一個簡單的for循環將數據幀分配給對象:

for (x in 1:length(list)){
  assign(paste0("test",x),data.frame(name=get(list[x])[1],matrix(get(list[x])[-1],ncol = 2)))
}

暫無
暫無

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

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