2016-08-02 1 views
0

[r]의 초보자이며 오류 해결에 대한 많은 경험이 없으므로 한 번 더 도움이 필요합니다. 나는 2 열 - 수와 주파수를 가진 n_occur이라는 이름의 data.frame을 가지고있다. 두 값 모두 정수입니다. 히스토그램을 얻고 싶었지만 오류가 발생했습니다. 인수 x는 숫자 여야하므로 두 열을 모두 num로 변경하려고했습니다.정수의 df를 num으로 변경하면 작동하지 않습니다.

n_occur[,] = as.numeric(as.character(n_occur[,])) 

를하지만 그 결과 모든 값으로 변경 NA : 먼저 I는 간단한 방법으로 보았습니다. 그래서 스택에 검색 한 후, 나는이 공식 사용하기로 결정 :

indx <- sapply(n_occur, is.factor) 
n_occur[indx] <- lapply(n_occur[indx], function(x) as.numeric(as.character(x))) 

아무것도 변경을, 나는 아직도 정수가 여전히 작동하지 않습니다 HIST. 어떤 아이디어로 그렇게 할 수 있습니까? 미리 감사드립니다;)

답변

0

실제로 그렇게 할 필요는 없습니다. 단지 전체 데이터 프레임 대신 실제 열을 제공하는 것뿐입니다. 예를 들어 : 또한 당신은 여전히 ​​그렇게 할 경우

n_occur = data.frame(
    number = sample(as.integer(1:10), 10, TRUE), 
    freq = sample(as.integer(0:10), 10, TRUE) 
) 
str(n_occur) 

'data.frame': 10 obs. of 2 variables: 
$ number: int 9 8 8 5 6 7 8 10 3 4 
$ freq : int 0 9 2 0 4 10 7 2 7 9 

hist(n_occur$number) # works 
hist(n_occur$freq) # works 
plot(n_occur$number, n_occur$freq, type = 'h') # works 
hist(n_occur) # fails since it is the whole dataframe 

,이 숫자에 요소를 변환 : 사람이 미래에 필요하면

as.numeric(factor(1:10)) 
2

: dplyr에서 mutate으로 문제를 해결 :

n_occur <- mutate(n_occur, freq=as.numeric(freq)) 

두 열 모두 분리 가능합니다. 작동했습니다;)

관련 문제