【问题标题】:R read csv as character stringR读取csv作为字符串
【发布时间】:2014-09-29 20:38:57
【问题描述】:

R 新手,无法找到此问题的答案。我正在使用以下内容创建一个新变量,该变量将每一行标记为是否包含一个单词。

a$keywordtag <- (1:nrow(a) %in% c(sapply(needle, grep, a$text, fixed = TRUE)))

'needle' 或要搜索的单词被读为:

needle <- c("foo", "x", "y")

但是,我希望针以 csv 文件的形式读入。 read.csv 似乎没有作为字符串读入的选项。 stringsAsFactors=FALSE 也不起作用。对此有何建议?

csv 将是:

 a <- read.table(text='
"foo"
"x"
"y"', header=FALSE)

【问题讨论】:

  • 您要读取的文件是什么样的?读入数据后,您始终可以使用as.character 进行转换。
  • 您如何将数据存储在原始文件中?一个逗号分隔的行?如果这样做scan() 可能是一个更好的导入选项。当您说“stringsAsFactors=FALSE 不起作用”时,您到底是什么意思?因为如果使用正确不会将字符变成向量。您未显示的代码可能有问题。
  • 使用 'read.csv' 和 'colClasses' 参数将满足您的需求。

标签: r csv character


【解决方案1】:

您应该将所有文本放在一个字符串中,并以换行符结束每一行

(rc <- read.csv(text = paste0(needle, collapse = "\n"), header = FALSE))
   V1
1 foo
2   x
3   y
identical(a, rc)
# [1] TRUE

你也可以试试readLines

read.csv(text = readLines(textConnection(needle)), sep = "\n", header = FALSE)
   V1
1 foo
2   x
3   y

在最后一行,如果needle实际上是一个文件,将textConnection(needle)替换为文件名

【讨论】:

    【解决方案2】:

    如果 stringsAsFactors=FALSE 不适合您,您可能会专注于解决该问题。以下代码应该可以很好地作为字符串读入:

    > needle = read.csv("PathToNeedle\\needle.csv", stringsAsFactors=FALSE, header=FALSE)
    > needle[1]
       V1
    1 foo
    2   x
    3   y
    > typeof(needle[1,1])
    [1] "character"
    

    如果您正在读入 needle 的 csv 文件真的只是:

    "foo"
    "x"
    "y"
    

    那么这很奇怪。运行 read.csv 时得到的结果数据帧是什么?如果它根本不起作用,另一种尝试是直接指定数据类型,如下所示:

    needle = read.csv("PathToNeedle\\needle.csv", colClasses=c('character'), header=FALSE)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2020-04-21
      • 2016-03-22
      • 2013-06-04
      • 1970-01-01
      • 2017-06-28
      相关资源
      最近更新 更多