G1G2Effect WEIGHT2 Sim1 Sim2 Sim3 Sim4 Sim5 Sim6 Sim7 Sim8 Sim9 Sim10 Sim11 Sim12
1 -0.0312 2.833103 -0.0312 -0.0312 0.0000 -0.0312 0.0312 0.0000 -0.0312 -0.0312 -0.0312 -0.0312 0.0000 -0.0312
2 -0.0640 2.536790 0.0000 -0.0640 -0.0640 -0.0640 -0.0640 -0.0640 -0.0640 -0.0640 -0.0640 -0.0640 -0.0640 -0.0640
3 0.0420 3.309074 0.0420 0.0000 0.0000 0.0420 0.0420 0.0420 0.0420 0.0420 0.0420 0.0420 0.0420 0.0000
4 0.0332 2.476224 0.0332 0.0332 0.0332 0.0332 0.0332 0.0000 0.0332 0.0332 0.0332 0.0332 -0.0332 0.0332
5 0.0000 2.265289 0.0302 0.0302 0.0302 0.0000 0.0302 0.0000 0.0302 -0.0302 0.0302 0.0000 0.0302 0.0000
6 0.0000 1.272609 0.0116 0.0000 0.0000 0.0116 0.0000 -0.0116 0.0032 -0.0102 0.0101
我有上面的data.frame ^。我正在尝试创建一个新的data.frame,它只是每列的总和。
df2 <- colSums(as.numeric(as.character(df1)))
但我收到错误消息
colSums中的错误(as.numeric(as.character(exam))): &#39; X&#39;必须是至少两个维度的数组 另外:警告信息: 在is.data.frame(x)中:由强制引入的NA
发生了什么事?
答案 0 :(得分:1)
as.numeric/as.character
适用于vector/matrix
而非data.frame
。我们需要遍历数据集并将其转换为numeric
,然后应用sum
sapply(df1, function(x) sum(as.numeric(as.character(x)), na.rm = TRUE))
我们也可以使用tidyverse
library(tidyverse)
df1 %>%
mutate_all(funs(sum(as.numeric(as.character(.)), na.rm = TRUE)))
如果我们确实需要colSums
,则可以选择将data.frame
转换为matrix
,以便factor
类转换为character
,然后更改将其numeric
分配给原始数据集的维度并获取dim
colSums