Let DT[-integer(0)] return the full table

Đang mở
#2,133 3 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
35/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
r
Lĩnh vực
data

Hướng nghiên cứu

Start at the [.data.table entry point referenced by the warning and reproduce the supplied DT[-w] examples with w = integer(0) and an out-of-range negative index. Done means DT[-integer(0)] returns the full table while the existing warning and other negative-indexing behavior remain appropriate.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

consistency

One annoying quirk of base R is the fact that x[-w] excludes the positions in w iff length(w) > 0. This happens because -w is computed before being passed to [. Since data.table evaluates the whole DT[...] call together, it can break consistency here, and I think should do so.

library(data.table)
DT = data.table(id = 1:2)
w = integer(0)

# current behavior
DT[-w]
# Empty data.table (0 rows) of 1 col: id

# desired behavior
DT[-w]
#    id
# 1:  1
# 2:  2

The workaround mentioned in the link above is to set w = nrow(DT) + 1L. This works with vectors, x = 1:2; x[-3L], but data.table gives a helpful warning for this hack.

w2 = 3L
DT[-w2]
#    id
# 1:  1
# 2:  2
# Warning message:
# In `[.data.table`(DT, -w2) :
#   Item 1 of i is -3 but there are only 2 rows. Ignoring this and 0 more like it out of 1.

I doubt this would break backward compatibility in a way that matters for folks; and I guess it can be done without much of any efficiency tradeoff (?).

Example of the negative consequences of current behavior from SO: http://stackoverflow.com/a/43682893/

Ngôn ngữ chính
R
Star
3.9k
Fork
1.1k
Merge trung bình
14 giờ 4 phút
Pull request đã merge (30 ngày)
4

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của Rdatatable/data.table

Tất cả issue của Rdatatable/data.table

Issue tương tự

Thêm issue về R

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.