有没有办法比我下面制作的更快或更智能地创建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"))
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
谢谢
您可以只使用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
Run Code Online (Sandbox Code Playgroud)
对于不太具体的情况,我建议查看@TylerRinkers wakefield包,它允许您轻松生成随机数据集.
只是作为一般信息,使用data.tablev 1.9.5+现在你可以设置新的列名通过参考使用setnames.例如,如果您的新数据集被调用res,可以简单地做
library(data.table) # v1.9.5+
setnames(res, c("ID", "Time", letters[1:5]))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |