Tôi có một vấn đề đơn giản, nhưng tôi không thể nắm bắt được logic để khắc phục nó.NA không được phép trong nhiệm vụ được chỉ định
Tôi có vectơ số bằng NA và muốn áp dụng một hoạt động tình trạng phụ thuộc vào chúng.
Một ví dụ đơn giản tương tự như vấn đề của tôi là:
x <- c(1,3,5,7,NA,2,4,6)
x[x>=5] <- c(1:8)[x>=5]
x[x<5] <- (c(1:8)*10)[x<5]
Nó trả về lỗi "NA không được phép vào tập subscripted", vì vậy tôi muốn biết điều gì sẽ là một giải pháp hợp lý cho rằng, cho rằng chạy từng phân bổ riêng biệt hoạt động như mong đợi.
Tôi muốn có kết quả dự kiến của:
[1] 10 20 3 4 NA 60 70 8
Tốt mà không cần phải thực hiện một vòng lặp for, như hoạt động này đã nằm trong một chức năng cho mô hình rỗng với nhiều lần lặp mà đang lứa tuổi.
Cảm ơn bạn trước, Leonardo
Điều này rất thú vị. Dường như bạn không thể kết hợp các số nguyên với 'NA' trong khi chỉ đặt và chỉ định nếu bạn có nhiều giá trị trên RHS ... I.e. 'X [c (NA, 1)] <- 100' và ' x [NA] <- 100' cả hai sẽ làm việc, trong khi 'x [c (NA, 1)] <- 100: 101' hoặc ' x [NA] <- 100: 101' sẽ không –
Đây là một câu hỏi có giá trị khi nó nhận được thông báo lỗi đó. Nhưng điều quan trọng cần lưu ý là ngay cả khi mã của bạn chạy mà không có các lỗi do NA gây ra, nó sẽ không tạo ra kết quả mong đợi đó. Dòng 2 mã của bạn sẽ ghi đè các giá trị ban đầu của 5 và 7 mà bạn đã sử dụng để dự đoán kết quả của 3 và 4 ở trên (thay vì 30 và 40), và chúng sẽ là 3 và 4 theo dòng thời gian 3 được gọi, gây ra chúng trở thành 30 và 40. Thử: 'x [x> = 5 &! is.na (x)] <- c(1:8)[x> = 5 &! is.na (x)]; x [x <5 &! Is.na (x)] <- (c (1: 8) * 10) [x <5 &! Is.na (x)] ' –