2013-03-15 15 views
17

này hoạt độngluận ký tự không trong chuỗi R chia chức năng (strsplit)

x <- "0.466:1.187:2.216:1.196" 
y <- as.numeric(unlist(strsplit(x, ":"))) 

Giá trị của blat$LRwAvg tất cả trông giống như X trên nhưng điều này không làm việc

for (i in 1:50){ 
    y <- as.numeric(unlist(strsplit(blat$LRwAvg[i], "\\:"))) 
    blat$meanLRwAvg[i]=mean(y) 
} 

Bởi vì:

Lỗi trong strsplit (blat $ LRwAvg [i], "\:"): đối số không phải ký tự

Nó không quan trọng nếu tôi có một, hai hoặc null dấu gạch chéo ngược.

Vấn đề của tôi là gì? (Không nói chung, ý tôi là trong nhiệm vụ đặc biệt này, về mặt kỹ thuật)

+0

đầu ra của lớp '(Blat $ LRwAvg)' là gì, và bạn có thể cung cấp cho chúng tôi một số dữ liệu từ 'blat $ LRwAvg' – alexwhan

+3

@AWE Đây là một loại lỗi. ép buộc đối số cho ký tự, 'as.character (blat $ LRwAvg)' – agstudy

+1

@alexwhan Tôi nhận thấy rằng để xóa nhận xét của tôi, nhưng không đủ nhanh: $. Có vẻ như đó là vấn đề với các yếu tố. Vì vậy, ép buộc vào ký tự như @agstudy gợi ý hoặc sử dụng 'stringsAsFactors = FALSE' khi tạo data.frame. – James

Trả lời

17

Như agstudy ngụ ý blat$LRwAvg <- as.character(blat$LRwAvg) trước khi vòng lặp cố định nó

blat$meanLRwAvg <- blat$gtFrqAvg #or some other variable in data frame with equal length 
blat$LRwAvg <- as.character(blat$LRwAvg) 
for (i in 1:50){ 
    y <- as.numeric(unlist(strsplit(blat$LRwAvg[i], "\\:"))) 
    blat$meanLRwAvg[i]=mean(y) 
} 
Các vấn đề liên quan