R 对两个匹配的字符串/单词使用ifelse函数
我的问题很简单。我有这样一个数据集:R 对两个匹配的字符串/单词使用ifelse函数,r,if-statement,R,If Statement,我的问题很简单。我有这样一个数据集: observed predicted probability result2 1 Head-up Grazing 0.2727273 FALSE 2 Head-up Grazing 0.7272727 TRUE 3 Head-up Grazing 0.7272727 TRUE 4 Head-up Grazing 0.5454545 TRUE 5 Head-
observed predicted probability result2
1 Head-up Grazing 0.2727273 FALSE
2 Head-up Grazing 0.7272727 TRUE
3 Head-up Grazing 0.7272727 TRUE
4 Head-up Grazing 0.5454545 TRUE
5 Head-up Grazing 0.7272727 TRUE
6 Head-up Grazing 0.4545455 FALSE
7 Head-up Vigilance 0.3636364 FALSE
8 Head-up Grazing 0.3636364 FALSE
9 Head-up Vigilance 0.3636364 FALSE
10 Unknown Grazing 0.3636364 FALSE
11 Moving Head-up 0.4545455 FALSE
12 Moving Head-up 0.3636364 FALSE
在这里,我已通过使用类似以下的ifelse
函数成功创建了列results2
:
table$result1<-ifelse(table$probability>0.5,"TRUE","FALSE")
我在表$result1中得到了错误错误:意外的“=”
,如@Sotos评论(很抱歉,我劫持了你的评论,但正确答案尚未发布),问题是你使用的是=
而不是=
看看这个例子:
首先,我生成测试数据集
df <- data.frame("observed" = rep(c("observed", "predicted"), 3),
"predicted" = "observed",
stringsAsFactors = F)
然后使用ifelse
df$result <- ifelse(df$observed == df$predicted, "POSITIVE", "NEGATIVE")
同样,正如@Soto指出的,您的问题是数据集中存储的数据类型。您有因子
,它应该是字符
我已经解决了这个问题,在创建数据集时添加了stringsAsFactors=F
,这样也可以使用read.table
或read.csv
等函数
另一个选择是使用@Soto建议的解决方案,这类似于
df$observed <- as.character(df$observed)
df$predicted <- as.character(df$predicted)
df$您需要==
进行比较<代码>=
正在分配(与0.5
相同,将生成布尔值,表
是一个常用的基函数,最好避免将其作为变量名Yes,即使使用=
时,我也会得到>表$result1Yes,但您会得到不同的错误。这一次,您的两个变量是具有不同级别的因子,因此无法进行比较。转换为as.ch当使用as.character
时,您能帮助我吗?我已经尝试了as.character(表)
,as.character(表$observed)as.character(表$predicted)
,但仍然得到>表$result1
df$result <- ifelse(df$observed == df$predicted, "POSITIVE", "NEGATIVE")
observed predicted result
1 observed observed POSITIVE
2 predicted observed NEGATIVE
3 observed observed POSITIVE
4 predicted observed NEGATIVE
5 observed observed POSITIVE
6 predicted observed NEGATIVE
df$observed <- as.character(df$observed)
df$predicted <- as.character(df$predicted)