R 从多维函数创建多个变量
我想在R 从多维函数创建多个变量,r,data.table,R,Data.table,我想在j中使用=从给定函数创建多个变量 例如,从data.table DT=data.table(id=sample(10,100),v=runif(100)) 我想创造 # id p20 p80 # 1 0.12 0.92 # 2 0.02 0.83 现在,我知道了 DT[,list(p20=quantile(v,0.20),p80=quantile(v,0.80),by=id] 我不知道你的要求是否可以直接实现。这里有一个替代方案-围绕它编写一个函数-(这是我的快速和肮脏的代码
j
中使用=
从给定函数创建多个变量
例如,从data.table
DT=data.table(id=sample(10,100),v=runif(100))
我想创造
# id p20 p80
# 1 0.12 0.92
# 2 0.02 0.83
现在,我知道了
DT[,list(p20=quantile(v,0.20),p80=quantile(v,0.80),by=id]
我不知道你的要求是否可以直接实现。这里有一个替代方案-围绕它编写一个函数-(这是我的快速和肮脏的代码,给你一个想法)
DT您可以尝试“列表化”结果。比如:
DT[, as.list(quantile(v, c(0.2, 0.8))), by = id]
如果要重命名新列,请执行以下操作:
setnames(DT, c("id", paste0("q", c(0.2, 0.8)))
谢谢然而,我寻找这样一种语法的原因之一是,调用一次分位数(v,c(0.2,0.8))
必须比依次调用分位数(v,0.2)
然后再调用分位数(v,0.8)
,效率更高,不?你可能是对的,但一次调用更多分位数肯定要付出代价——即system.time分位数(v,c(0.2,0.8))大于系统时间(分位数(v,c(0.2))数据
setnames(DT, c("id", paste0("q", c(0.2, 0.8)))