r编程-如何根据唯一字符将向量的每个元素拆分为子集
我有一个包含许多元素的向量。每个元素都是一个字符串。例如,考虑以下向量:r编程-如何根据唯一字符将向量的每个元素拆分为子集,r,R,我有一个包含许多元素的向量。每个元素都是一个字符串。例如,考虑以下向量: [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
[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
提前感谢扩展@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
我还没有找到一个可以让我开始的例子。数据来源是什么?这些只是制表符。
do.call(rbind,strsplit(c('1 3 5','4 5 6'),'')
是获取矩阵的一种方法,您可以将其强制为一个数据帧。read.table(text=x)
应该可以,其中x
是向量。或者您可以粘贴而不是sapply
,即read.table(text=paste)(gsub('+\t$,'',v),collapse='\n'),sep='\t',col.names=paste0('C',1:7))
确实更好。
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"