2015-10-20 134 views
-1

上因素試圖編輯字符串的錯誤我的基本語法的在R.的R - 在矢量

一個簡單的誤解我有長度145的矢量title我嘗試設置高於閾值top(所有值= 50)至" "。 然而,當我把

title[(top+1):length(data.[,1])] 

我得到一個錯誤

Warning message: 
In `[<-.factor`(`*tmp*`, (top + 1):length(data[, 1]), value = " ") : 
    invalid factor level, NA generated 

我應該怎麼做是正確的?

編輯:

我使用的解決方法是: title <- c(title[1:top],replicate(length(title)-top,""))

數據例如:

title <- unlist(data[,1]) 

> head(title) 

[1] Shanghai Yantian Busan  Ningbo Hong Kong Kaohsiung 
262 Levels: Aarhus Abidjan Acajutla Adelaide Agadir Ahus Algeciras Anguilla Antofagasta Antwerp Apia Apra (Agana) Aqaba (El Akaba) Arica ... Zeebrugge 

> length(data[,1]) 

[1] 145 
+0

你有一個因素列錯誤說:另外,用括號左右'(1:length' – akrun

+0

不要緊,即使我寫的'標題[頂+ 1: (data [,1]) - top]',我得到相同的錯誤 – Ilja

+1

然後,考慮給別人展示一些可重複的例子來測試 – akrun

回答

0

你會得到同樣的錯誤與

x <- factor(letters[1:3]); 
x[3] <- " " 
# Warning message: 
# In `[<-.factor`(`*tmp*`, 3, value = " ") : 
# invalid factor level, NA generated 

你得到一個警告(不是錯誤),您正在嘗試一個新的水平增加的一個因素。當你創建一個因子時,R假定你已經指定了所有的級別(在這種情況下,x只需要「a」,「b」或者「c」的值。如果你想允許其他值,你可以指定他們在levels=參數

x <- factor(letters[1:3], levels=c(letters[1:3]," ")) 
x[3] <- " " 
# no error 
+0

哇,它爲什麼這麼複雜?我有點驚訝,謝謝! – Ilja

0

a+b:ca + (b:c)(a + b):c。有關運營商的優先級,請參閱?Syntax

+0

是的,但它沒有解決關於警告的原因的最終問題和NA,而不是「」 – Ilja