2013-07-16 45 views
7

Trong một vài người khác ít liên quan, tôi đã kiểm tra hai câu trả lời sau đây:
Answer 1
Answer 2
Làm thế nào để xóa một phần tử từ một danh sách các chuỗi trong R

Tuy nhiên, các giải pháp được trình bày có không giúp đỡ.

Tôi có thể hiểu lầm vấn đề của riêng mình và cố gắng làm đúng cách sai. Tôi đánh giá cao sự giúp đỡ nào.

Tôi có đoạn code sau đây mà tôi xây dựng một danh sách các chuỗi và cố gắng để xóa phần tử thứ hai của danh sách:

> my_strings <- "string1 string2 string3 string4 string5" 
> my_list <- strsplit(my_strings,split=" ") 
> #Now trying to delete one element from my_list using positive indexing 
> 
> my_list[[2]] <- NULL #does not work 
> my_list[2] <- NULL #nope. Doesn't work either 
> my_list[[1]][2] <- NULL #error: replacement has length zero 
> my_list[[1]][[2]] <- NULL # error: more elements supplied than there are to replace 

Vì vậy, câu hỏi của tôi là: làm thế nào tôi có thể xóa phần tử thứ hai (hoặc nhiều các yếu tố, như 1 và 3) của my_list? Các phần tử của my_list không được đặt tên, tôi muốn truy cập chúng bằng chỉ mục số.

+5

'mylist [[1]] <- mylist [[1]] [- 2]'. Tôi muốn đề nghị đọc một chút về cách thức subsetting và danh sách làm việc trong R. – Justin

+2

Take-home message: Sử dụng subsetting thay vì gán 'NULL'. – Roland

+0

Cảm ơn bạn rất nhiều Justin (và Roland). Sử dụng dòng bạn đã hiển thị với một dải thay vì chỉ mục phủ định hoạt động hoàn hảo cho mục đích của tôi. Tôi đã cố gắng để loại bỏ các mục với "<- NULL" xây dựng, nhưng nó không hoạt động. Đăng ký và sau đó ghi đè lên danh sách hoạt động hoàn hảo và kết quả là như nhau. Vì vậy, tôi đoán tôi không thể chỉ đơn giản là loại bỏ các yếu tố, nhưng tôi thay vì phải subset danh sách và thay thế nó bằng danh sách nhỏ hơn – bomgaroto

Trả lời

2

Tôi không chắc chắn bạn định tạo danh sách các vectơ với mã của bạn; có thể dễ dàng hơn khi sử dụng một vector ký tự. Hãy thử sử dụng danh sách không công khai trước tiên:

my_list <- unlist(strsplit(my_strings,split=" ")) 

my_list <- my_list[-2] 
+0

Ah, được rồi. Câu trả lời của Than @ Justin là tốt nhất. –

+0

Câu trả lời của bạn hoạt động tốt, nhưng tôi phải sử dụng lại danh sách() trong dòng thứ hai, nếu không tôi sẽ kết thúc với một thứ không phải là danh sách. Tuy nhiên, các tùy chọn subsetting trình bày bởi Justin và Roland bắt mắt của tôi tốt hơn. Tuy nhiên, tôi đã chấp nhận câu trả lời của bạn vì họ chỉ thêm nhận xét. – bomgaroto

+0

Yup, tôi bỏ lỡ - xin lỗi vì sự nhầm lẫn! Nhưng một lần nữa, có vẻ như giải pháp của @ Justin đã đáp ứng nhu cầu của bạn. –

Các vấn đề liên quan