我有一个包含众多元素的向量。每个元素都是一串字符。例如,请考虑以下向量:
[1] "1 \t1.02 \t2.2 \t1.2 \t1.01 \t1.08 \t785 \t"
[2] "2 \t1.03 \t5 \t2.6 \t1.5 \t1.01 \t948 \t"
[3] "3 \t1.03 \t11 \t2.9 \t1.6 \t1.01 \t942 \t"
[4] "4 \t1.04 \t7 \t3.7 \t1.6 \t1.01 \t848 \t"
我想将此向量转换为数据框。每个元素代表一行。注意在向量的每个元素中,是文本的组合\ t;这代表一列的结尾。在上面的例子中,向量将成为如下所示的数据框:
C1 C2 C3 C4 C5 C6 C7
1 1 1.02 2.2 1.2 1.01 1.08 785
2 2 1.03 5 2.6 1.5 1.01 948
3 3 1.03 11 2.9 1.6 1.01 942
4 4 1.04 7 3.7 1.6 1.01 848
提前致谢
答案 0 :(得分:1)
扩展@RichardScriven的评论,你可以像这样在你的案例中获得一个数据框:
df <- read.table(text=sapply(1:length(v), function(x) c(v[x],"\n")))
names(df) <- paste0("C",1:ncol(df))
#> df
# C1 C2 C3 C4 C5 C6 C7
#1 1 1.02 2.2 1.2 1.01 1.08 785
#2 2 1.03 5.0 2.6 1.50 1.01 948
#3 3 1.03 11.0 2.9 1.60 1.01 942
#4 4 1.04 7.0 3.7 1.60 1.01 848
第一行的内部部分sapply
连接向量以创建单个字符串,但是附加的&#34; \ n&#34; s表示每行的结尾(行) 。带有选项read.table()
的函数text=
将生成的字符串转换为data.frame。
第二行用于根据请求分配列的名称。
数据强>
v <- vector()
v[1] <- "1 \t1.02 \t2.2 \t1.2 \t1.01 \t1.08 \t785 \t"
v[2] <- "2 \t1.03 \t5 \t2.6 \t1.5 \t1.01 \t948 \t"
v[3] <- "3 \t1.03 \t11 \t2.9 \t1.6 \t1.01 \t942 \t"
v[4] <- "4 \t1.04 \t7 \t3.7 \t1.6 \t1.01 \t848 \t"