R - 在向量中尝试编辑字符串的因子的错误

时间:2015-10-20 14:18:00

标签: r indexing

我对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

2 个答案:

答案 0 :(得分:0)

a+b:c a + (b:c)不是(a + b):c。有关运算符的优先级,请参阅?Syntax

答案 1 :(得分: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