使用如下数据框:
set.seed(100)
df <- data.frame(id = sample(1:5, 6, replace = TRUE),
val1 = rep(c("true", "false"), 3),
val2 = sample(c("true", "false"), 6, replace = TRUE))
id val1 val2
1 31 true false
2 26 false true
3 56 true false
4 6 false true
5 47 true false
6 49 false false
Run Code Online (Sandbox Code Playgroud)
需要改变在COL的值val1和val2以TRUE(R逻辑真),如果值"true"和FALSE如果值是"false".
这可以通过
df$val1 <- df$val1 == "true"
df$val2 <- df$val2 == "true"
Run Code Online (Sandbox Code Playgroud)
虽然上面的工作,我有一个案例,列数运行到100s.因此需要一种方法来指定要变异的列 - df[,2:3]如上例所示.虽然基础R解决方案是首选,但其他人欢迎.
@DavidArenburg的评论答案解释了R如何处理logicals需要成为一个真正的答案imo,在这里复制和粘贴它:
你可以简单地去
df[-1] <- as.logical(unlist(df[-1]))
Run Code Online (Sandbox Code Playgroud)
看看?TRUE:
as.logical试图强迫其参数为逻辑类型.对于因子,这使用级别(标签).像as.vector一样,它会删除包含名称的属性.字符串c("T","TRUE","True","true")被视为true,c("F","FALSE","False","false")被视为false,而所有其他字符串被视为false NA.
所以基本上R是熟悉"true"和"false",并且知道如何处理它们
| 归档时间: |
|
| 查看次数: |
302 次 |
| 最近记录: |