相关疑难解决方法(0)

标准形式和数据的功能形式的不同结果.参考配置`:=`

data.tabel的引用分配似乎有一个细微的差别:=标准中的=功能形式.

标准形式强制RHS到矢量,功能形式没有.一个细节,但没有记录,因为我相信.

library(data.table)
dt <- data.table(a = c('a','b','c'))
v <- c('A','B','C')
l <- list(v)

all.equal(copy(dt)[, new := v], copy(dt)[, `:=` (new = v)])
# [1] TRUE
all.equal(copy(dt)[, new := l], copy(dt)[, `:=` (new = l)])
# [1] "Datasets have different column modes. First 3: new(character!=list)"

copy(dt)[, new := l][]
#    a new
# 1: a   A
# 2: b   B
# 3: c   C

copy(dt)[, `:=` (new = l)][]
#    a   new
# 1: a A,B,C
# 2: b A,B,C …
Run Code Online (Sandbox Code Playgroud)

r assign data.table

8
推荐指数
1
解决办法
166
查看次数

data.table 当只有一行时将列表添加为列

我有使用data.table对单词进行操作的函数,该函数将向量列表分配为列。这很有效,除非 data.table 是一行。我在下面演示这个问题。如何让 data.table 将一个向量的列表指定为一列,就像我将 2 个向量的列表作为一列一样?

移动电源

dat2 <- dat <- data.frame(
    x = 1:2,
    y = c('dog', 'cats'), 
    stringsAsFactors = FALSE
)

library(data.table)
setDT(dat)           # 2 row data.table
(dat2 <- dat2[1, ])  # single row data.frame
setDT(dat2)

letterfy <- function(x) strsplit(x, "") 

## works as expected when >= 2 rows
dat[, letters := letterfy(y)]
dat

##    x    y letters
## 1: 1  dog   d,o,g
## 2: 2 cats c,a,t,s

## Try on 1 row
dat2[, letters …
Run Code Online (Sandbox Code Playgroud)

r data.table

3
推荐指数
1
解决办法
880
查看次数

标签 统计

data.table ×2

r ×2

assign ×1