在向量列表中,将每个向量转换为字符串,然后转换为R中的数据帧

时间:2018-06-14 21:17:24

标签: r list dataframe vector

我有一个矢量列表j,看起来像这样:

>j
[[1]
[1] "a" "b" "c"

[[2]]
[1] "c" "c" 

[[3]]
[1] "d" "d" "d" "a" "a" 
.
. 
. 

我想将其转换为一个数据框,该数据框有一列,每个矢量内容连接在一起。所以该列看起来像:

  Column_Name
1       a b c 
2         c c 
3   d d d a a 

我尝试过使用Replace()函数以及我将在之后使用的循环:

for (x in 1:length(j)){ 
  j[x] = paste(j[x], collapse = " ")
}

 j <- data.frame(matrix(unlist(j), nrow=length(j), byrow=T)

非常感谢任何指导。 谢谢。

2 个答案:

答案 0 :(得分:3)

正如您自己尝试的那样,CATEGORY | VALUE EQUAL | 60 LESS | 100 GREATER | 20 函数和sapply collapse参数应该全部包含在paste中:

data.frame

# Toy data set.seed(1) j <- replicate(5, rep(sample(letters, 1), sample(1:10,1))) print(j) #[[1]] #[1] "g" "g" "g" "g" # #[[2]] # [1] "o" "o" "o" "o" "o" "o" "o" "o" "o" "o" # #[[3]] #[1] "f" "f" "f" "f" "f" "f" "f" "f" "f" # #[[4]] #[1] "y" "y" "y" "y" "y" "y" "y" # #[[5]] #[1] "q" # Collapse each element and wrap into a data.frame res <- data.frame("Column_name" = sapply(j, paste, collapse = " ")) print(res) # Column_name #1 g g g g #2 o o o o o o o o o o #3 f f f f f f f f f #4 y y y y y y y #5 q sapply - 函数应用于paste的每个元素,以创建连接列表元素的字符向量。 list构造函数只是将该输出转换为所需的输出。

答案 1 :(得分:0)

提供name列表,然后使用stack转换data.frame中的列表。最后,dplyr包用于从分隔的公共元素中折叠向量。

示例数据取自@AndersEllernBilgrau的答案。

set.seed(1)
j <- replicate(5, rep(sample(letters, 1), sample(1:10,1)))

names(j) <- seq_along(j)

library(dplyr)
stack(j) %>% group_by(ind) %>%
  summarise(Column_Name = paste0(values, collapse = " ")) %>%
  ungroup() %>% select(-ind)

# # A tibble: 5 x 1
# Column_Name        
# <chr>              
# 1 g g g g            
# 2 o o o o o o o o o o
# 3 f f f f f f f f f  
# 4 y y y y y y y      
# 5 q 
#