在R中迭代时,日期转换为数字
我有一个数据框“热浪”,其中一个名为“日期”的列是该类是日期的列,
> class(HeatWave$Date)
[1] "Date"
我想通过这些日期进行迭代并检索每个月的一个月,
for (i in HeatWave$Date){
month <- format(i, '%m')
}
但是此触发了错误,
Error in prettyNum(.Internal(format(x, trim, digits, nsmall, width, 3L, :
invalid 'trim' argument
似乎是迭代的 错误通过这些日期,I 变量使其可以将类别更改为数字,就像
> class(i)
[1] "numeric"
我该如何使其正常工作一样?谢谢! :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的循环的问题
是将
date
转换为数字
值。这导致格式()
使用数字
值的方法,其中trim
是第一个参数:在2022-04--创建15 by reprex package (v2.0.1)
loop解决方案
通过数据框架的索引循环循环而不是实际值。
由
创建整理解决方案
使用
dplyr :: mutate()
和lubridate :: month()
更容易做到这一点:在2022-04-15创建的 reprex软件包(v2.0.1)
示例数据
The problem
Your loop is converting the
Date
into anumeric
value. This causesformat()
to use the method fornumeric
values, wheretrim
is the first argument:Created on 2022-04-15 by the reprex package (v2.0.1)
A loop solution
Loop through the index of the dataframe instead of the actual values.
Created on 2022-04-15 by the reprex package (v2.0.1)
A tidy solution
Use
dplyr::mutate()
andlubridate::month()
to do this even easier:Created on 2022-04-15 by the reprex package (v2.0.1)
The example data
这是
sapply
方式。下面的第一个
sapply
显示循环获得日期,但打印语句输出数字。使用sapply
,格式
语句按需运行。由
Here is a
sapply
way.The first
sapply
below shows that the loop gets a date but the print statement outputs numbers. Withsapply
, theformat
statement works as wanted.Created on 2022-04-15 by the reprex package (v2.0.1)