R读取csv作为字符串

时间:2014-09-29 20:38:57

标签: r csv character

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)

2 个答案:

答案 0 :(得分:3)

您应该在一个字符串中包含所有文本,并使用换行符

结束每一行
(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)替换为文件名

答案 1 :(得分:1)

如果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"

如果您正在阅读针的csv文件真的只是:

"foo"
"x"
"y"
那时候非常特别。运行read.csv时得到​​的数据帧是什么?如果它根本不起作用,则尝试的另一种方法是直接指定数据类型,如下所示:

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