Tôi đang cố gắng tìm hiểu cách tôi có thể thực hiện logical operators
khi tôi sử dụng lập chỉ mục trong data.table package
trong R
?Làm thế nào để thực hiện các toán tử logic thông qua việc lập chỉ mục trong data.table tại R?
Sau đây là ví dụ. Tôi tạo một datatable
có tên là dt
. và sau đó làm cho var2
là chìa khóa trong datatable
tôi:
> dt = data.table(var1 = rep(LETTERS[1:5],2), var2 = seq(1,20, 2), var3 = ceiling(rnorm(10, 3, 2)))
> dt
var1 var2 var3
1: A 1 5
2: B 3 3
3: C 5 0
4: D 7 6
5: E 9 3
6: A 11 4
7: B 13 2
8: C 15 1
9: D 17 3
10: E 19 7
> setkey(dt, var2)
Vì vậy, bây giờ tôi muốn xác định tất cả các giá trị trong tôi đã được xác định key (var2)
là less than 10 (<10)
. Thực hiện các bước sau đây cho tôi errors
.
> dt[ < 10]
Error: unexpected '<' in "dt[ <"
> dt[ .< 10]
Error in eval(expr, envir, enclos) : object '.' not found
> dt[ .(< 10)]
mong đợi của tôi sẽ là:
var1 var2 var3
1: A 11 4
2: B 13 2
3: C 15 1
4: D 17 3
5: E 19 7
BTW, tôi biết rằng chỉ bằng cách làm tôi sẽ nhận được kết quả. NHƯNG xin vui lòng xem xét rằng tôi muốn có được các khái niệm về lập chỉ mục trong data.table
và hiểu và biết làm thế nào để làm điều đó mà không cần gọi key(var2)
trong mỗi lệnh của tôi!
Bất kỳ trợ giúp nào được giải thích đều được đánh giá cao.
'dt [var2 <10] '?Với lời giải thích là bạn cần chỉ định * cái gì đó * nhỏ hơn 10? – Gregor
@Gregor, tôi biết điều này và nó rất rõ ràng! Nhưng khái niệm lập chỉ mục là tôi KHÔNG cần phải gọi tên cột (khóa) mỗi lần. vì vậy, làm thế nào tôi có thể làm điều đó mà không gọi 'var2' trong lệnh của tôi? – Daniel
Từ '? Setkey' hoặc'? Key', có vẻ như bạn có thể gọi 'key()' trên một bảng để lấy khóa, vì vậy 'dt [dt [[key (dt)]] <10]' hoạt động cho điều đó . Bạn cũng có thể muốn chỉnh sửa câu hỏi để làm cho nó nói rằng bạn muốn làm điều đó theo chương trình mà không cần gọi 'var2' trong lệnh của bạn. – Gregor