我需要洗牌的数据帧的行,把这样的:R:打印使用样本创建的数据帧()从kimisc库
A foo
B bar
C baz
成这样:
B foo
C bar
A baz
即,第一列应该洗牌,同时保持其余的完整。我正在使用库中的sample()
来建议here。一个最小的工作代码示例:
>df<-read.table("file1", header=F, skip=1)
>library(kimisc)
>names<-read.table("file2")
>df1<- transform(sample(df,size=nrow(names)),V1=names)
>df1
V1 V2
5 A 21266
8 C 22109
7 F 17971
1 J 11137
哪里file1
是
Name Value
A 28463
B 11137
C 24966
D 24611
E 14980
F 21266
G 23441
H 17971
I 22109
J 31746
和file2
是:
A
C
F
J
然后我想写这个数据帧到一个文件和我的预期输出是
A 21266
C 22109
F 17971
J 11137
然而,装载kimisc
库提供了自己的sample
功能(不同于香草)打乱数据帧我想它的方式,但似乎搞砸了打印:
write.table(DF1,” file3" 的,报价= F,九月= '\ t' 的COL = FALSE)
这将产生以下输出:
5 1:4 21266
8 1:4 22109
7 1:4 17971
1 1:4 11137
如果我使用香草sample
,数据帧生成的是按预期方式打印的,但不按照我需要的方式打乱(即,列而不是行被混洗)。
所以,我该如何使用从kimisc
sample
,让我品尝行,而不是数据帧的列,仍然在路上write.table
将与base::sample
返回的数据帧打印工作呢?
PS.I正在使用的名单,因为我其实是想从包含143558041线在该文件中提到的名字的一个子集(39953)的文件分配随机值。
按照要求,中dput(df1)
输出
> dput(df1)
structure(list(V1 = structure(list(V1 = structure(1:4, .Label = c("A",
"C", "F", "J"), class = "factor")), .Names = "V1", class = "data.frame", row.names = c(NA,
-4L)), V2 = c(24611L, 14980L, 22109L, 21266L)), .Names = c("V1",
"V2"), row.names = c(3L, 4L, 8L, 5L), class = "data.frame")
能否请您发表dput的'输出(DF1 )'? – krlmlr
@krlmlr感谢您的帮助,我添加了您请求的输出。它看起来像你的示例函数返回链接到被抽样对象的特定行的列表,这是否正确? – terdon