我有个问题。我正在用R构建推荐系统,而我对这种语言还很陌生。我似乎无法弄清楚以下情况。
我有一个矩阵,像:
eventID g_26 g_27 g_28 g_29 g_30 g_31 g_32 g_33 g_34 g_35 g_36 g_37 g_38 g_39 g_40 g_41 g_42 g_43
1: 1010 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0
2: 1016 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
3: 1019 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
4: 1053 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0
5: 1168 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0
6: 1188 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
我想做的是替换所有具有1到1 / sqrt(在该特定行中的总数为1)的所有值。
如果使用起来更简单,我也会使用数据表包。
提前致谢!
我们可以指定在感兴趣的列.SDcols
(-1
意味着我们选择了除第一列中的所有列),得到每一行的总和Data.table的子集Reduce
和+
,取平方根(sqrt
1),除,乘用data.table(.SD
)的子集,并将其分配(:=
)到感兴趣的列
dt[, (2:ncol(dt)) := .SD*1/sqrt(Reduce(`+`, .SD)), .SDcols = -1]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句