我对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 :(得分: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