更改数据框列的级别会更改数据框中的值[重复]

我不明白这个逻辑:

x_value <- "yes"
df <- data.frame(
                x = x_value
            )

levels(df$x) <- c("no", "yes")

df

结果是:

df
   x
1 no

因此,在我最初创建的一行中更改了x的值。当我为数据帧中的因子列分配级别时,这不是简单地定义元数据吗?

如何在分配级别的同时仅在值=“ yes”的这一列中保持原始值?还是应该创建一个空的数据框并分配级别,然后分配值?谢谢!

我的特定用例是,我有一些来自某个地方的值(预测值)。因此基本上是一行数据。然后,我要做出一个预测。不过,大多数R模型都需要设置级别。因此,我做了上面的事情,但是它改变了数据?!

PS:

我可以做,但是看起来很笨拙:

x_value <- "yes"
df <- data.frame(
                x = x_value
            )

levels(df$x) <- c("no", "yes")

df[1,]$x = x_value

PPS:

这可能是最短的代码-谢谢:

df <- data.frame(
    x = factor(x_value, levels = c("no", "yes"))
)
评论
  • 挂机
    挂机 回复
    x_value <- factor("yes", levels = c("no", "yes"))
    df <- data.frame(
        x = x_value
    )
    
    df
    
        x
    1 yes