第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用以下內(nèi)容分配多個列:= data.table,group

使用以下內(nèi)容分配多個列:= data.table,group

皈依舞 2019-08-30 14:59:46
使用分配給多個列的最佳方法是什么data.table?例如:f <- function(x) {c("hi", "hello")}x <- data.table(id = 1:10)我想做這樣的事情(當然這種語法不正確):x[ , (col1, col2) := f(), by = "id"]為了擴展它,我可能有很多列的名稱存儲在一個變量(比如說col_names)中,我想這樣做:x[ , col_names := another_f(), by = "id", with = FALSE]做這樣的事的正確方法是什么?
查看完整描述

3 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經(jīng)驗 獲得超6個贊

這現(xiàn)在適用于R-Forge的v1.8.3。謝謝你突出它!


x <- data.table(a = 1:3, b = 1:6) 

f <- function(x) {list("hi", "hello")} 

x[ , c("col1", "col2") := f(), by = a][]

#    a b col1  col2

# 1: 1 1   hi hello

# 2: 2 2   hi hello

# 3: 3 3   hi hello

# 4: 1 4   hi hello

# 5: 2 5   hi hello

# 6: 3 6   hi hello


x[ , c("mean", "sum") := list(mean(b), sum(b)), by = a][]

#    a b col1  col2 mean sum

# 1: 1 1   hi hello  2.5   5

# 2: 2 2   hi hello  3.5   7

# 3: 3 3   hi hello  4.5   9

# 4: 1 4   hi hello  2.5   5

# 5: 2 5   hi hello  3.5   7

# 6: 3 6   hi hello  4.5   9 


mynames = c("Name1", "Longer%")

x[ , (mynames) := list(mean(b) * 4, sum(b) * 3), by = a]

#     a b col1  col2 mean sum Name1 Longer%

# 1: 1 1   hi hello  2.5   5    10      15

# 2: 2 2   hi hello  3.5   7    14      21

# 3: 3 3   hi hello  4.5   9    18      27

# 4: 1 4   hi hello  2.5   5    10      15

# 5: 2 5   hi hello  3.5   7    14      21

# 6: 3 6   hi hello  4.5   9    18      27



x[ , mynames := list(mean(b) * 4, sum(b) * 3), by = a, with = FALSE][] # same

#    a b col1  col2 mean sum Name1 Longer%

# 1: 1 1   hi hello  2.5   5    10      15

# 2: 2 2   hi hello  3.5   7    14      21

# 3: 3 3   hi hello  4.5   9    18      27

# 4: 1 4   hi hello  2.5   5    10      15

# 5: 2 5   hi hello  3.5   7    14      21

# 6: 3 6   hi hello  4.5   9    18      27


x[ , get("mynames") := list(mean(b) * 4, sum(b) * 3), by = a][]  # same

#    a b col1  col2 mean sum Name1 Longer%

# 1: 1 1   hi hello  2.5   5    10      15

# 2: 2 2   hi hello  3.5   7    14      21

# 3: 3 3   hi hello  4.5   9    18      27

# 4: 1 4   hi hello  2.5   5    10      15

# 5: 2 5   hi hello  3.5   7    14      21

# 6: 3 6   hi hello  4.5   9    18      27


x[ , eval(mynames) := list(mean(b) * 4, sum(b) * 3), by = a][]   # same

#    a b col1  col2 mean sum Name1 Longer%

# 1: 1 1   hi hello  2.5   5    10      15

# 2: 2 2   hi hello  3.5   7    14      21

# 3: 3 3   hi hello  4.5   9    18      27

# 4: 1 4   hi hello  2.5   5    10      15

# 5: 2 5   hi hello  3.5   7    14      21

# 6: 3 6   hi hello  4.5   9    18      27


查看完整回答
反對 回復 2019-08-30
?
慕絲7291255

TA貢獻1859條經(jīng)驗 獲得超6個贊

以下簡寫符號可能有用。所有的功勞都歸功于Andrew Brooks,特別是這篇文章。


dt[,`:=`(avg=mean(mpg), med=median(mpg), min=min(mpg)), by=cyl]


查看完整回答
反對 回復 2019-08-30
?
溫溫醬

TA貢獻1752條經(jīng)驗 獲得超4個贊

我應該如何修改以下行,以便從dim輸出中為每個objectName獲取兩列,而不是一列包含兩行?data.table(objectName=ls())[,c("rows","cols"):=dim(get(objectName)),by=objectName](我正在使用data.table1.8.11)

查看完整回答
反對 回復 2019-08-30
  • 3 回答
  • 0 關注
  • 562 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號