r - 使用 for 循环将布尔向量简单转换为字符串向量
问题描述
我对 R 很陌生,大约一个小时。
我有一个简单的一个月的正利润率向量,它返回 12 个项目为 True 或 False,并称这个向量为 good_months
我正在尝试生成一个类似的向量,该向量返回所有为真值的等效月份名称。
例如:
Good months
TRUE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE FALSE FALSE TRUE
# which represents positive profit margins for Jan, Jun, Jul, Aug, Sept, Dec
我写了一个简单的 for 循环,但不幸的是它返回了一个向量。我将如何纠正这一点?
list_of_good_months <- c()
length(list_of_good_months)
for(i in 1:12){
if(good_months[i] == TRUE){
list_of_good_months[i] <- months[i]
}
else{
list_of_good_months[i] <- " "
}
}
list_good_months
length(list_of_good_months)
控制台输出:
**[1] 0
>
> for(i in 1:12){
+ if(good_months[i] == TRUE){
+ list_of_good_months[i] <- months[i]
+ }
+ else{
+ list_of_good_months[i] <- " "
+ }
+ }
>
> list_good_months
[1] "Sep"
> length(list_of_good_months)
[1] 12**
解决方案
R 是一种矢量化语言,很少需要编写显式for
循环来实现目标。
有内置向量month.abb
,month.name
您可以在此处使用它,并使用good_months
.
good_months <- c(TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE)
list_of_good_months <- month.abb[good_months]
list_of_good_months
#[1] "Jan" "Jun" "Jul" "Aug" "Sep" "Dec"
要用空格替换FALSE
值,您可以使用 -
list_of_good_months <- month.abb
list_of_good_months[!good_months] <- ''
list_of_good_months
# [1] "Jan" "" "" "" "" "Jun" "Jul" "Aug" "Sep" "" "" "Dec"
推荐阅读
- c# - WPF 自动列出上下文中的项目
- android - Android API < 8 的 SpeechRecognizer 类的 stopListening() 方法的替代方案
- matlab - Matlab中的仿射缩放方法
- c# - 如何模拟任务的数据
? C# - javascript - ES6 类构造函数参数超过 require
- jquery - jquery 向表中添加行的每个函数
- azure - Azure Log Analytics 聚合查询
- java - 收到错误“此 URL 不支持消息 HTTP 方法 GET”但从未在任何地方使用过 GET
- javascript - 通过 Firestore 函数 onCreate 向用户配置文件添加其他数据
- php - 带有 mssql 的 PHP 连接失败(Windows 身份验证)