【发布时间】:2017-02-07 08:16:28
【问题描述】:
使用如下数据框:
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
如果值为"true" 和FALSE 如果值为"false",则需要将col val1 和val2 中的值更改为TRUE(R 逻辑真)。
这可以通过
df$val1 <- df$val1 == "true"
df$val2 <- df$val2 == "true"
虽然上述方法有效,但我有一个列数达到 100 的情况。所以需要一种方法来指定要变异的列 - 就像上面示例中的df[,2:3]。虽然首选基本 R 解决方案,但也欢迎其他解决方案。
【问题讨论】:
-
我会选择
df[-1] <- as.logical(unlist(df[-1]))。查看?TRUE:“as.logical 尝试将其参数强制为逻辑类型。对于因素,这使用级别(标签)。就像 as.vector 一样,它会去除包括名称在内的属性。字符串 c(" T", "TRUE", "True", "true") 为真,c("F", "FALSE", "False", "false") 为假,其他为 NA。”。所以基本上R熟悉"true"和"false" -
在stackoverflow.com/questions/42084356/…987654321@问了几乎完全相同的问题后,为什么还要为此打开第二个问题
-
这不是“几乎完全相同的问题”——你为什么这么认为?
-
你上一个问题是这个问题的一个特例。所以我用这个关闭了它。
标签: r