2014-09-29 143 views
0

新增至R並且無法找到對此問題的答案。我正在使用以下內容來創建一個新的變量,將每行標記爲包含一個單詞,或者不包含該單詞。R將csv讀取爲字符串

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

「針」或搜索的單詞被讀爲:

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

但是,我想針在爲CSV文件中讀取。 read.csv似乎沒有選項作爲字符串讀入。 stringsAsFactors = FALSE也不起作用。對此有何建議?

的CSV是:

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

您試圖閱讀的文件是什麼樣的?讀取數據後,您始終可以使用'as.character'進行轉換。 – 2014-09-29 20:57:24

+0

如何將數據存儲在原始文件中?一個逗號分隔的行?如果'scan()'可能是一個更好的導入選項。當你說「stringsAsFactors = FALSE不起作用」時,你的意思是什麼?因爲如果正確使用不會將字符轉換爲矢量。您的代碼可能有些問題沒有顯示。 – MrFlick 2014-09-29 21:12:45

+0

使用'read.csv'和'colClasses'參數將用於您正在查找的內容。 – hvollmeier 2014-09-29 21:22:39

回答

2

你應該有所有的文字在一個字符串中和結束每行一個新的行字符

(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

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