如何在R中随机化CSV文件?

时间:2018-07-13 21:04:37

标签: r csv

我对R还是比较陌生,我正在尝试弄清楚如何获取包含单词列表的csv并将其随机化。我需要创建一个对象图,我想弄清楚如何用我的列表随机填充该图,或者简单地随机化列表,以便我可以随机填充该图。我可以使用什么命令来执行此操作?

1 个答案:

答案 0 :(得分:0)

使用sample()函数,可以重新整理CSV文件(data.frame)中的行或重新排列对象vector

输入

如果输入的CSV文件有多行

Test <- read.table("MapTest.csv", header = FALSE, sep = ",")
Test
#       V1    V2     V3
# 1 Heaven   Air Flower
# 2  Earth  Lily   Jazz
# 3   Hell Dance Tennis
# 4  Sweet  Sour Bitter

dim(Test)
# [1] 4 3

改组行

多次运行,每次随机播放

  Test[sample(1:nrow(Test)),]
  #       V1    V2     V3
  # 2  Earth  Lily   Jazz
  # 4  Sweet  Sour Bitter
  # 3   Hell Dance Tennis
  # 1 Heaven   Air Flower

  Test[sample(1:nrow(Test)),]
  #       V1    V2     V3
  # 3   Hell Dance Tennis
  # 1 Heaven   Air Flower
  # 2  Earth  Lily   Jazz
  # 4  Sweet  Sour Bitter

改组后选择2行

在将CSV文件中的行数改组后选择2行。多次运行它将导致每次出现两行不同。

  Test[sample(1:nrow(Test), 2),]
  #       V1   V2     V3
  # 4  Sweet Sour Bitter
  # 1 Heaven  Air Flower

  Test[sample(1:nrow(Test), 2),]
  #      V1    V2     V3
  # 4 Sweet  Sour Bitter
  # 3  Hell Dance Tennis

将多行CSV文件中的每一行的对象改组

  lapply(1:nrow(Test), function(x) sample(Test[x,]))
  # [[1]]
  #       V1     V3  V2
  # 1 Heaven Flower Air
  # 
  # [[2]]
  #     V3   V2    V1
  # 2 Jazz Lily Earth
  # 
  # [[3]]
  #      V2     V3   V1
  # 3 Dance Tennis Hell
  # 
  # [[4]]
  #       V3    V1   V2
  # 4 Bitter Sweet Sour


输入

如果Input有1行:对象之间用逗号分隔

  Test <- read.table("MapTest.csv", header = FALSE, sep = ",")
  dim(Test)
  # [1]  1 12
  Test
  #       V1  V2     V3    V4   V5   V6   V7    V8     V9   V10  V11    V12
  # 1 Heaven Air Flower Earth Lily Jazz Hell Dance Tennis Sweet Sour Bitter

混排1行的CSV文件的对象

如果多次运行,结果将有所不同。

  sample(Test)
  #     V5    V4     V1   V6    V8     V9  V2   V10    V12  V11   V7     V3
  # 1 Lily Earth Heaven Jazz Dance Tennis Air Sweet Bitter Sour Hell Flower

  sample(Test)
  #      V4   V7     V1    V12     V3  V11    V8   V5   V10     V9   V6  V2
  # 1 Earth Hell Heaven Bitter Flower Sour Dance Lily Sweet Tennis Jazz Air


如果没有输入CSV文件

在R中创建对象的向量

  Map_vec <- c("Hell","Heaven","Flower","Water","Air","Sky")
  Map_vec
  # [1] "Hell"   "Heaven" "Flower" "Water"  "Air"    "Sky"   

  length(Map_vec)
  # [1] 6

混洗向量

  sample(Map_vec)
  # [1] "Flower" "Sky"    "Heaven" "Air"    "Hell"   "Water" 

  sample(Map_vec)
  # [1] "Water"  "Heaven" "Sky"    "Hell"   "Air"    "Flower"

混洗并从向量中选择少量

  sample(Map_vec, 3)
  # [1] "Heaven" "Sky"    "Hell"  

  sample(Map_vec, 3)
  # [1] "Heaven" "Sky"    "Air"