R:1和0到TRUE和FALSE的基本转换失败

R:1和0到TRUE和FALSE的基本转换失败,r,R,我已经有一段时间没有使用R了,我需要一个关于基本功能的复习,令人惊讶的是,我在谷歌上找不到这个 这是失败的。它什么也不做,没有消息。在RStudio中关闭并重新加载Viewdf显示df$Valid仍然是0和1 df$Valid[df$Valid == 1] <- TRUE df$Valid[df$Valid == 0] <- FALSE df$Value2是默认类型的双,从.cv读入读写::Read CSV 让我们考虑这个玩具例子: df <- data.fra

我已经有一段时间没有使用R了,我需要一个关于基本功能的复习,令人惊讶的是,我在谷歌上找不到这个

这是失败的。它什么也不做,没有消息。在RStudio中关闭并重新加载Viewdf显示df$Valid仍然是0和1

df$Valid[df$Valid == 1] <- TRUE  
df$Valid[df$Valid == 0] <- FALSE  

df$Value2是默认类型的双,从.cv读入读写::Read CSV

让我们考虑这个玩具例子:


df <- data.frame(var1 = c(1, 1, 0), var2= c(1.001, 1.00001, 0.0001))
> df
  var1    var2
1    1 1.00100
2    1 1.00001
3    0 0.00010
> # let's convert the first variable
> df$var1 <- sapply(df$var1, as.logical)
> df
   var1    var2
1  TRUE 1.00100
2  TRUE 1.00001
3 FALSE 0.00010
> # let's convert the second variable
> df$var2 <- sapply(df$var2, as.integer)
> df$var2 <- sapply(df$var2, as.logical)
> df
   var1  var2
1  TRUE  TRUE
2  TRUE  TRUE
3 FALSE FALSE


请注意,对于VAR2是双的,我们需要首先用整数重整它。

让我们考虑这个玩具例子:


df <- data.frame(var1 = c(1, 1, 0), var2= c(1.001, 1.00001, 0.0001))
> df
  var1    var2
1    1 1.00100
2    1 1.00001
3    0 0.00010
> # let's convert the first variable
> df$var1 <- sapply(df$var1, as.logical)
> df
   var1    var2
1  TRUE 1.00100
2  TRUE 1.00001
3 FALSE 0.00010
> # let's convert the second variable
> df$var2 <- sapply(df$var2, as.integer)
> df$var2 <- sapply(df$var2, as.logical)
> df
   var1  var2
1  TRUE  TRUE
2  TRUE  TRUE
3 FALSE FALSE


请注意,对于双精度变量var2,我们首先需要将其重新转换为整数。

这将根据条件将现有有效变量替换为True或False,这似乎是您正在尝试执行的操作

df$Valid <- df$Valid == 1

这将根据条件用True或False替换现有的有效变量,这似乎是您试图执行的操作

df$Valid <- df$Valid == 1

Robert的答案是最简单的方法,但是,您的尝试失败了,因为在向量中只能有一种类型的数据。当你在做

df$Valid[df$Valid == 1] <- TRUE  

Robert的答案是最简单的方法,但是,您的尝试失败了,因为在向量中只能有一种类型的数据。当你在做

df$Valid[df$Valid == 1] <- TRUE  

我想把这个发到stackoverflow。删除选项在哪里??????我只看到共享、引用、编辑、标记。请将此迁移到stackoverflow。上面说我只能每90分钟发一次。我想我是被贴在这里阻止了,因为这是一个新帐户。别担心,我们会尝试迁移它:我想把它贴到stackoverflow。删除选项在哪里??????我只看到共享、引用、编辑、标记。请将此迁移到stackoverflow。上面说我只能每90分钟发一次。我想我在这里发布了阻止,因为这是一个新帐户。别担心,我们会尝试迁移它:df$var1感谢您提供了一个有效的解决方案。为什么它不让我做我写的作业?如果是整数,我尝试的赋值也不起作用。John,当向量中存在混合类型时,它们将转换为可以容纳每个元素的最简单类型。例如,cTRUE,0被转换为c1,0,而cT,0被转换为cT,参见,eg R允许您进行赋值,但它将TRUE转换为其数值1,与FALSE相同0@alanocallaghan-好的,现在我明白了。谢谢。df$var1感谢您提供了一个有效的解决方案。为什么它不让我做我写的作业?如果是整数,我尝试的赋值也不起作用。John,当向量中存在混合类型时,它们将转换为可以容纳每个元素的最简单类型。例如,cTRUE,0被转换为c1,0,而cT,0被转换为cT,参见,eg R允许您进行赋值,但它将TRUE转换为其数值1,与FALSE相同0@alanocallaghan-好的,现在我明白了。谢谢。谢谢你用另一种方式做这件事。谢谢你用另一种方式做这件事。