gpt4 book ai didi

在内部环境中重新调平似乎不起作用

转载 作者:行者123 更新时间:2023-12-04 12:20:02 24 4
gpt4 key购买 nike

我有一个 data.frame,我想重新调整一个因子级别以将其放在首位。但是,使用 within环境好像不行。 (我是初学者,所以如果很容易,请原谅我。)

我的数据框:

df <- as.data.frame(matrix(sample(c("Yes","No"),20,replace=TRUE),ncol=1))
levels(df$V1)
[1] "No" "Yes"

现在使用 relevel 对因子水平进行重新排序:
df <- within(df, relevel(V1, ref="Yes"))
levels(df$V1)
[1] "No" "Yes"

换句话说,似乎不是 relevel工作。一定是因为我用的是 within()环境很糟糕,因为如果我“直接”这样做,它会起作用:
df$V1 <- relevel(df$V1, ref="Yes")
> levels(df$V1)
[1] "Yes" "No"

我究竟做错了什么?

最佳答案

我想你需要

df <- within(df, V1 <- relevel(V1, ref="Yes"))

因为 relevel返回因子的重新调整值,但不将其分配给变量。您正在评估 df 中的表达式,但没有将它分配给任何东西。我可能会用
df <- transform(df, V1 = relevel(V1, ref="Yes"))

相反,但这是一种风格偏好(另请参阅 plyr/ dplyr 函数 mutatetransmute ...)

如果(如评论中所问)您有一个名称向量(即字符向量),那么您就不能真正使用 transform 共享的非标准评估范式。 , with , within , subset ( dplyr ...) 但或多或少必须以老式的方式做事,例如
df[vars.to.relevel] <- lapply(df[vars.to.relevel],relevel,ref="Yes")   

关于在内部环境中重新调平似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26100356/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com