我正在尝试创建一些类似于以下示例的数据图:
set.seed(1)
c <- rnorm(3)
df <- as.data.frame(c)
df$a <- strsplit(as.character(c), "1")
这给出了以下内容:
> table(unlist(df$a))
-0.6264538 -0.8356286 0. 0047 0742332 24 83643324222082
1 1 1 1 1 1 1
我需要的是能够创建一个2D映射,类似于我原本认为用table(unlist(df$a), c)
创建的东西,但是该命令给出了错误:
表中的错误(unlist(df $ a),c):所有参数必须具有相同的长度
输出应该是(手工创建):
c
c -0.8356286 2410047 -0.6264538 0742332 0. 83643324222082
-0.835628612410047 1 1 0 0 0 0
-0.626453810742332 0 0 1 1 0 0
0.183643324222082 0 0 0 0 1 1
我们可以通过rep
的df$c
length
e the df$a
然后使用table
table(rep(df$c, lengths(df$a)), unlist(df$a))
# -0.6264538 -0.8356286 0. 0047 0742332 24 83643324222082
#-0.835628612410047 0 1 0 1 0 1 0
#-0.626453810742332 1 0 0 0 1 0 0
#0.183643324222082 0 0 1 0 0 0 1
哪里
lengths(df$a) #gives
#[1] 2 2 3
然后
rep(df$c, lengths(df$a)) #gives
#[1] -0.6264538 -0.6264538 0.1836433 0.1836433 -0.8356286 -0.8356286
#[7] -0.8356286