我目前正尝试通过向每个数据集添加新列来更新多个数据集。
我确实读过this question上的解决方案。但是运行
lapply(list(annual_2022_v2, bottom_2022_v2, q1_2022_v2, q2_2022_v2, q3_2022_v2, q4_2022_v2, top_2022_v2), transform, start_hour = hour(started_at))
我只打印了正确的输出,但没有更新或添加新列到我的原始数据集。
为了在一个单独的数据集上测试它,
lapply(list(q1_2022_v2), transform, start_hour = hour(started_at)).
虽然它打印了正确的数据集和新列,但它没有更新它。
我试图找出能够编写某种循环的“最佳”方法,而不是硬编码8个不同的数据集,例如
q1_2022_v2$start_hour <- hour(q1_2022_v2$started_at)
q2_2022_v2$start_hour <- hour(q2_2022_v2$started_at)
q3_2022_v2$start_hour <- hour(q3_2022_v2$started_at)
q4_2022_v2$start_hour <- hour(q4_2022_v2$started_at)
我也看到了使用Map()和cbind()的解决方案,但我对它们的工作原理感到困惑。
我最终决定不把事情复杂化,只使用一个数据集。
2条答案
按热度按时间qzwqbdag1#
如果不赋值,
lapply
的返回值就丢失了,lapply
不是for
循环,它是做函数式编程的,打印出来的是它的返回值。首先把这些数据集放到一个列表中。我强烈怀疑它们都有相同的结构,这意味着它们从来不应该是分开的,即在创建/导入它们的时候把它们放到列表中。
您可能应该
rbind
这四个数据集,并将q作为分组列。wgx48brx2#
我认为你需要把那个代码分配给新的数据试试这个