【问题标题】:Read list of names from CSV into R将名称列表从 CSV 读入 R
【发布时间】:2017-09-23 16:58:39
【问题描述】:

我有一个名称的文本文件,用逗号分隔,我想将其读入 R 中的任何内容(数据框或向量都可以)。我尝试 read.csv 它只是将它们全部读取为单独列的标题,但是 0 行数据。我尝试 header=FALSE 并将它们作为单独的列读取。我可以使用它,但我真正想要的是一个只有一堆行的列,每个名称一个。例如,当我尝试打印此数据框时,它会打印所有无用的列标题,然后不打印值。看起来它应该很容易使用,但在我看来,一列名称会更容易使用。

【问题讨论】:

  • 没有看到文件很难分辨。也许该数据不是表格形式,而是由逗号分隔的一长串字符串。如果是这种情况,请尝试scan(what = 'character', etc)。 (首先使用文本编辑器检查文件。)
  • @RuiBarradas 是的,就是这样。这是一长串用逗号分隔的字符串。我正在尝试将其作为一列阅读,即使这似乎不是 R 的默认行为。
  • 如果是这种情况,我会尝试dat <- scan(file = your_filename, what = 'character', sep = ',')
  • 请注意,scan 接受一个“sep”参数,所以可能dat <- scan(what = 'character', file = your_file, sep=",") 用逗号分隔每组字符。
  • @RuiBarradas 你能回答这个问题吗?这似乎正是我想要的。我也很欣赏其他答案,因为它可以帮助我学习。

标签: r


【解决方案1】:

既然 OP 要求我这样做,我将在上面发布评论作为答案。
它非常简单,它来自于使用scan 读取数据序列、数字或字符序列的一些练习。

dat <- scan(file = your_filename, what = 'character', sep = ',')

【讨论】:

    【解决方案2】:

    您可以使用read.csv 读取字符串作为标题,然后只需提取名称(使用names)并将其放入data.frame

    data.frame(x = names(read.csv("FILE")))
    

    例如:

    write.table("qwerty,asdfg,zxcvb,poiuy,lkjhg,mnbvc",
                "FILE", col.names = FALSE, row.names = FALSE, quote = FALSE)
    data.frame(x = names(read.csv("FILE")))
    
          x
    1 qwerty
    2  asdfg
    3  zxcvb
    4  poiuy
    5  lkjhg
    6  mnbvc
    

    【讨论】:

      【解决方案3】:

      类似的东西?

      制作一些测试数据:

      # test data
      list_of_names <- c("qwerty","asdfg","zxcvb","poiuy","lkjhg","mnbvc" )
      list_of_names <- paste(list_of_names, collapse = ",")
      
      list_of_names
      
      # write to temp file
      tf <- tempfile()
      writeLines(list_of_names, tf)
      

      你需要这部分:

      # read from file
      line_read <- readLines(tf)
      line_read
      
      list_of_names_new <- unlist(strsplit(line_read, ","))
      

      【讨论】:

        猜你喜欢
        • 2017-10-20
        • 2013-01-04
        • 2014-06-14
        • 2014-06-12
        • 2015-03-14
        相关资源
        最近更新 更多