大佬教程收集整理的这篇文章主要介绍了应用一个没有 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,请注明来意。