不理解 ifelse 语句

Not understanding the ifelse statement

我正在尝试根据其他两个变量重新编码一个变量,我认为我误解了 ifelse 语句的工作原理。

我有一列是字符串,另一列是整数。我希望新列与字符串 c1 相同,除非整数列 flag 等于 1,在这种情况下它将等于 XX

  c1      flag    EXPECTED OUTPUT
  SS         0          SS
  SS         1          XX
  MM         0          MM
  LL         0          LL
  LL         0          LL
  SS         1          XX
  LL         0          LL      
  LL         1          XX
  SS         0          SS

我这样使用 ifelse

df$expectedoutput <- ifelse(df$flag==1, "XX", df$c1)

我不确定这是否是重新编码的最佳方式。

当我要求查看新专栏时出现此错误:

Error in View : 'names' attribute [1849] must be the same length as the vector [1]

我相信你被stringsAsFactors=TRUE咬了。这似乎给出了预期的输出:

df <- read.table(text="
c1      flag
SS         0
SS         1
MM         0
LL         0
LL         0
SS         1
LL         0     
LL         1
SS         0", header=TRUE, stringsAsFactors=FALSE)

df$expected <- ifelse(df$flag == 1, "XX", df$c1)

> df
  c1 flag expected
1 SS    0       SS
2 SS    1       XX
3 MM    0       MM
4 LL    0       LL
5 LL    0       LL
6 SS    1       XX
7 LL    0       LL
8 LL    1       XX
9 SS    0       SS