给定列表b01
列表:tp01
,tp02
,tp03
,其中每个tp
存储特定类型的数据,如何做我提取每个tp
的类?
目标是返回保留原始变量类型的单个数据框(例如int,char)。我正在考虑提取每个tp
的类并存储它们,然后用这些存储的类覆盖数据框的类。
在下面的示例中,结果数据框有3个被视为Factor
的变量。我希望将它们视为int
,char
,int
。
我没有运气就尝试了以下内容:
str(as.data.frame(lapply(b01,unlist)))
str(sapply(as.data.frame(lapply(b01,unlist)),class))
lapply(b01,unlist)
sapply(str(lapply(b01,unlist)),unlist)
MWE:
set.seed(1)
tp01 <- list(sample(seq(0,100),10))
set.seed(2)
tp02 <- list(sample(seq(0,100),10))
tp03 <- list(letters[c(sample(seq(0,26),10))])
b01 <- list(tp01, tp02, tp03)
df <- as.data.frame(matrix(unlist(lapply(all,unlist)),
nrow=length(unlist(b01[1]))*length(all)))
> df
V1 V2 V3
1 26 q 18
2 37 j 70
3 56 t 56
4 89 c 16
5 19 g 91
6 86 y 90
7 97 w 12
8 62 v 78
9 58 r 43
10 5 b 50
11 18 26 q
12 70 37 j
13 56 56 t
14 16 89 c
15 91 19 g
16 90 86 y
17 12 97 w
18 78 62 v
19 43 58 r
20 50 5 b
str(df)
'data.frame': 20 obs. of 3 variables:
$ V1: Factor w/ 19 levels "12","16","18",..: 5 6 10 16 4 15 19 12 11 8 ...
$ V2: Factor w/ 20 levels "19","26","37",..: 15 14 17 12 13 20 19 18 16 11 ...
$ V3: Factor w/ 20 levels "12","16","18",..: 3 7 6 2 10 9 1 8 4 5 ...
答案 0 :(得分:0)
您可以使用lapply和as.data.frame执行此操作:
names(b01) <- c("tp01","tp02","tp03") #optional
first.step <- lapply(b01, unlist)
second.step <- as.data.frame(first.step, stringsAsFactors = F)
有关强制执行该步骤的信息,请参阅unlist()文档。 stringsAsFactors = F参数将在第二步中保留字符向量。