快速创建data.frame
问题描述:
有没有办法创建一个data.frame比我在下面做的更快或更聪明?快速创建data.frame
df <- data.frame(ID = rep(c("WT", "KO"), each = 4),
Time = rep(c("A", "B", "C", "D"), times = 2),
replicate(5,sample(0:100,8,rep=TRUE)))
colnames(df)<-c("ID", "Time", c("a", "b", "c", "d", "e"))
的data.frame应该还是这个样子
df
ID Time a b c d e
WT A 28 56 50 60 15
WT B 54 77 11 67 34
WT C 53 8 87 62 55
WT D 30 73 47 82 1
KO A 24 83 14 17 36
KO B 91 83 72 41 4
KO C 79 17 76 21 54
KO D 41 40 77 49 92
感谢
答
您可以只使用expand.grid
对于非数值唯一组合(有时你甚至可以利用它内置的数据设置这样的LETTERS
)并且只运行sample
而将其包装成矩阵,类似于
set.seed(123)
data.frame(expand.grid(c("WT", "KO"), LETTERS[1:4]),
matrix(sample(40), ncol = 5))
# Var1 Var2 X1 X2 X3 X4 X5
# 1 WT A 12 36 6 11 24
# 2 KO A 31 15 1 27 13
# 3 WT B 16 29 8 22 25
# 4 KO B 33 14 21 28 26
# 5 WT C 34 19 32 4 20
# 6 KO C 2 38 37 35 7
# 7 WT D 18 3 40 10 5
# 8 KO D 30 23 17 9 39
对于不特定的情况下,我会建议寻找到@TylerRinkers wakefield包,它允许你生成随机数据集轻松。
只是一般信息,使用data.table
v 1.9.5+您可以参考使用setnames
现在设置新的列名。因为,例如,如果你的新的数据集称为res
,人们可以简单地做
library(data.table) # v1.9.5+
setnames(res, c("ID", "Time", letters[1:5]))
你可以像'data.frame财产以后(expand.grid(C( “WT”, “KO”),填写[1 :4]),矩阵(样本(40),ncol = 5))' –
谢谢。如何将colname包含在一起? – Al14
我可以使用名称而不是setNames吗?它对我不起作用 – Al14