2015-10-20 105 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