R 对数据帧因子列的操作

R 对数据帧因子列的操作,r,dataframe,R,Dataframe,我不想在循环中执行操作,我的数据如下所示 dfU[4:7] vNeg neg pos vPos 1 0 35 28 0 2 0 42 26 0 3 0 77 59 0 4 0 14 24 0 5 0 35 45 0 6 0 17 12 0 7 0 31 23 0 8 0 64 52 1 9 0

我不想在循环中执行操作,我的数据如下所示

 dfU[4:7]
      vNeg neg pos vPos
 1      0  35  28    0
 2      0  42  26    0
 3      0  77  59    0
 4      0  14  24    0
 5      0  35  45    0
 6      0  17  12    0
 7      0  31  23    0
 8      0  64  52    1
 9      0  15  17    0
 10     0  21  29    0
当我执行这样的特定操作时,得到错误的结果可能只是因为我尝试了转换withtransform,但得到的错误对因子没有意义

  b<-as.numeric(((as.numeric(dfU[,4])*-5)+(as.numeric(dfU[,5])*-2)+(as.numeric(dfU[,6])*2)+(as.numeric(dfU[,7])*5)))
  b 
  [1] -14 -32 -16  18   8  -8 -18  -7   6  14  24  -9   0 

b最好是避免第四个。列作为因子,如果这不是您想要的。
不过,一种解决方法是使用
as.numeric(as.character())
。假设“a”是你的第四栏,你的情况是:

> a <- as.factor(c(rep(0,7),1,rep(0,2)))
> a
 [1] 0 0 0 0 0 0 0 1 0 0
Levels: 0 1
> as.numeric(a)
 [1] 1 1 1 1 1 1 1 2 1 1

你可以看看。还要了解
str
。请使用
dput(dfU)
提供您的数据。问题是您正试图对因子类型向量执行数字操作。如何创建data.frame?你们读了吗?嘿@agstudy我在dfU上通过cbind操作创建了data.frame,谢谢,它可以工作,但在这里寻找更有效的方法。
> a <- as.factor(c(rep(0,7),1,rep(0,2)))
> a
 [1] 0 0 0 0 0 0 0 1 0 0
Levels: 0 1
> as.numeric(a)
 [1] 1 1 1 1 1 1 1 2 1 1
> as.numeric(as.character(a))
 [1] 0 0 0 0 0 0 0 1 0 0