我有一个包含NaN和Inf的数据帧.我想根据变量(Q)对数据进行排名.所以,我正在使用
rank(df$Q, ties.method= "first")
#> [1] 3 5 6 4 2 9 7 10 8 1
如你所见,即使是NaN和Inf也是排名的.
因此,如果数据包含NaN和Inf,我想忽略排名.我正在使用以下代码:
#Checking if Q is valid
if((df$Q %in% "NaN") || (df$Q %in% "Inf")){
RankingQ <- rep("-", nrow(df))
}else{
RankingQ <- rank(df$Q, ties.method= "first")
}
它返回以下错误:
错误(%"NaN"中的df$q%)||(%"inf"中的df$q%): 强制"逻辑(1)"中的"长度=10"
以前,它在出现警告(版本)时才起作用.4.2.0).但在R版本4.3.0中,它返回错误
使用长度大于1的LHS或(如果判断)RHS调用&;&;或||现在总是错误的,并显示以下形式的报告
强制"逻辑(1)"中的"长度=4"
我的意见是
df <- structure(list(Alternatives = 1:10, Q = c(0.375, 0.5, 0.5, 0.469,
0.219, NaN, Inf, NaN, Inf, 0.153)), class = "data.frame", row.names = c(NA,
-10L))
我想要的输出是
Alternatives Q Rank
1 0.375 3
2 0.500 5
3 0.500 6
4 0.469 4
5 0.219 2
6 NaN NA
7 Inf NA
8 NaN NA
9 Inf NA
10 0.153 1
我怎么才能解决这个问题呢?