我有一个矢量列表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)
非常感谢任何指导。 谢谢。
答案 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
#