2016-08-02 74 views
0

我是[r]中的新手,在解决错误方面没有太多的经验,所以我需要更多的时间来帮助。我有一个名为n_occur的数据框有2列 - 数量和频率。这两个值都是整数。我想得到直方图,但我得到了错误:参数x必须是数字,所以我想将两列都更改为num。 首先,我试图用最简单的方法:将整数的整数变为数字不起作用

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

但作为一个结果,所有值变为NA。所以在搜索堆栈后,我决定使用这个公式:

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

如果有人需要它的未来:与mutate从dplyr解决了这个问题:

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

两列分开。它的工作;)