我是这个数据框:
coef variable value
1 1 0e+00
2 1 1e-05
1 2 0e+00
2 2 2e-05
我试图根据列变量计算值列的 L1 范数。因此,如果 variable = 1 ,我想计算值为0e + 00和1e-05 的范数。当变量= 2 时,我想计算值0e + 00和2e-05 的标准,等等......
所以结果应该是这样的:
coef variable value norm
1 1 0e+00 1e-05
2 1 1e-05 1e-05
1 2 0e+00 2e-05
2 2 2e-05 2e-05
这是我到目前为止所做的代码:
#creating the data frame
coef = c(1, 2, 1,2)
variable = c(1,1,2,2)
value = c(0e+00, 1e-05, 0e+00, 2e-05)
df = data.frame(coef, variable, value)
#this part is not working correctly because df$value is not a matrix
for(k in 1:2){
if(df$variable==1){
df$norm=norm(df$value, type="1")
}
}
是否可以从数据帧值计算范数?
答案 0 :(得分:1)
按照'变量'进行分组后,我们可以将matrix
电话打包到'值'要转换为单个列matrix
,并获取'规范',请在mutate
library(dplyr)
df %>%
group_by(variable) %>%
mutate(Norm = norm(matrix(value))) %>%
as.data.frame
# coef variable value Norm
#1 1 1 0e+00 1e-05
#2 2 1 1e-05 1e-05
#3 1 2 0e+00 2e-05
#4 2 2 2e-05 2e-05