将整数df更改为num不起作用

时间:2016-08-02 10:11:53

标签: r

我[r]中的新手并没有太多解决错误的经验,所以再一次我需要帮助。我有一个名为 n_occur 的data.frame,它有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仍然无法正常工作。任何想法如何做到这一点?在此先感谢;)

2 个答案:

答案 0 :(得分:2)

如果将来有人需要它:从dplyr解决了mutate的问题:

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

两个列分开。它起作用了;)

答案 1 :(得分: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))