次のようなdata.tableDT
があります。
DT <- structure(list(V1 = structure(1:3, .Label = c("S01", "S02", "S03" ), class = "factor"), V2 = structure(c(1L, 3L, 2L), .Label = c("Alan Hal << Guy John", "Bruce Dick Jean-Paul << Damien", "Jay << Barry Wally Bart"), class = "factor")), .Names = c("V1", "V2"), row.names = c(NA, -3L), class = "data.frame")
# DT
# V1 V2
# 1 S01 Alan Hal << Guy John
# 2 S02 Jay << Barry Wally Bart
# 3 S03 Bruce Dick Jean-Paul << Damien
setDT(DT)
V2
「<<」で列を分割し、2 つの新しい列で出力を取得しようとしています。
次のように使用してそれを行うことができましたstringi
T <- as.data.frame(do.call(rbind, stri_split_fixed(DT$V2, "<<", 2)))
setnames(T, old = colnames(T), new = c("V3", "V4"))
cbind(DT, T)
V1 V2 V3 V4
1: S01 Alan Hal << Guy John Alan Hal Guy John
2: S02 Jay << Barry Wally Bart Jay Barry Wally Bart
3: S03 Bruce Dick Jean-Paul << Damien Bruce Dick Jean-Paul Damien
:=
ただし、演算子を使用して参照することで同じことをしたいと思います。data.table を使用してこれを行う方法は?
RHSの部分に問題があります。
DT[, c("V1", "V2) := list()]
stri_split_fixed(DT$V2, "<<", 2)
長さ 2 の文字ベクトルを持つ 3 つのリストを返します。長さ 3 の文字ベクトルを持つ 2 つのリストを取得するにはどうすればよいですか?