我[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仍然无法正常工作。任何想法如何做到这一点?在此先感谢;)
答案 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))