다음 중 하나가 foo
data.table에서 열 을 제거 합니다 df3
.
# Method 1 (and preferred as it takes 0.00s even on a 20GB data.table)
df3[,foo:=NULL]
df3[, c("foo","bar"):=NULL] # remove two columns
myVar = "foo"
df3[, (myVar):=NULL] # lookup myVar contents
# Method 2a -- A safe idiom for excluding (possibly multiple)
# columns matching a regex
df3[, grep("^foo$", colnames(df3)):=NULL]
# Method 2b -- An alternative to 2a, also "safe" in the sense described below
df3[, which(grepl("^foo$", colnames(df3))):=NULL]
data.table 은 다음 구문도 지원합니다.
## Method 3 (could then assign to df3,
df3[, !"foo"]
그러나 실제로 빼기 열 보기를 인쇄하는 대신 열 "foo"
을 실제로 제거 하려면 방법 1을 대신 사용하고 싶습니다.df3
df3
"foo"
(마십시오 당신이 방법에 의존 사용하는 경우 있음 grep()
또는 grepl()
, 당신은 설정해야 pattern="^foo$"
보다는 "foo"
당신이 같은 이름을 가진 열을 원하지 않는 경우, "fool"
그리고 "buffoon"
(함유 한 것과 foo
도 일치하고 제거 할) 문자열로합니다.)
덜 안전한 옵션, 대화식 사용에 적합 :
다음 두 관용구 ( 열 일치하는 항목이있는 경우)df3
"foo"
도 작동 하지만 예상하지 못한 방식으로 실패 할 수 있습니다. 예를 들어, 존재하지 않는 column을 검색하기 위해 그중 하나를 사용하면 "bar"
행이 0 인 data.table이됩니다.
결과적으로, 이들은 예를 들어, substring을 포함하는 이름을 가진 열을 빼고 data.table을 표시하려고하는 대화식 사용에 가장 적합합니다 "foo"
. 프로그래밍 목적으로 (또는 실제로 df3
사본 에서 열 대신 열을 제거하려는 경우 ), 방법 1, 2a 및 2b가 실제로 가장 좋은 옵션입니다.
# Method 4:
df3[, .SD, .SDcols = !patterns("^foo$")]
마지막으로을 사용하는 접근 방식이 with=FALSE
있지만 data.table
점차이 인수를 사용하지 않기 때문에 피할 수있는 곳에서는 권장하지 않습니다. 옵션이 실제로 필요한 경우를 대비하여 여기에 표시하십시오.
# Method 5a (like Method 3)
df3[, !"foo", with=FALSE]
# Method 5b (like Method 4)
df3[, !grep("^foo$", names(df3)), with=FALSE]
# Method 5b (another like Method 4)
df3[, !grepl("^foo$", names(df3)), with=FALSE]
dt
대신 data.table의 이름을 지정하는 것이 더 명확했을 것입니다df3
.