程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了应用一个没有 for 循环的引用子集的函数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决应用一个没有 for 循环的引用子集的函数?

开发过程中遇到应用一个没有 for 循环的引用子集的函数的问题如何解决?下面主要结合日常开发的经验,给出你关于应用一个没有 for 循环的引用子集的函数的解决方法建议,希望对你解决应用一个没有 for 循环的引用子集的函数有所启发或帮助;

我有一个像这样的 data.frame

df=data.frame(ID=c("A","A","B","B"),V=c(3,6,8,5,4))

我想将 V 的每个值除以同一 ID 上 V 的总和,并将结果存储在新列中。我可以通过使for 循环来实现:

for (i in 1:nrow(df)) {
  df$Y[[i]] <- df$V[[i]]/sum(subset(df,ID == df$ID[[i]])$V)
}

哪个给出了预期的输出:

  ID V         y
1  A 3 0.1764706
2  A 6 0.3529412
3  A 8 0.4705882
4  B 5 0.3333333
5  B 6 0.4000000
6  B 4 0.2666667

我想知道是否有更简单/有效的方法,例如使用apply 家族。 感谢您的帮助!

解决方法

可能最简单的方法是使用 dplyr

library(dplyr)
df=data.frame(id=c("A","A","B","B"),V=c(3,6,8,5,4))
df %>% 
  group_by(id) %>% 
  summarise(y = prop.table(V))
# A tibble: 6 x 2
# Groups:   id [2]
  id        y
  <chr> <dbl>
1 A     0.176
2 A     0.353
3 A     0.471
4 B     0.333
5 B     0.4  
6 B     0.267
,

无需使用循环或应用,R 已经向量化。使用上面 Ronak 建议的答案。 您也可以使用

@JsonIgnore

为了更好地理解它实际上@JsonManagedReference @OneToMany(targetEntity = Address.class,mappedBy = "employee",orphanRemoval = true,cascade = CascadeType.ALL,fetch = FetchType.EAGER) private Set<Address> addresses = null; @JsonBACkReference @manyToOne(fetch = FetchType.LAZY,optional = falsE) @Joincolumn(name = "emp_id",nullable = falsE) private employee employee; 一样工作。您也可以将其存储在新变量中。

大佬总结

以上是大佬教程为你收集整理的应用一个没有 for 循环的引用子集的函数全部内容,希望文章能够帮你解决应用一个没有 for 循环的引用子集的函数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:for