折叠数据帧列表

时间:2016-11-16 02:01:43

标签: r dataframe

我有一个数据框列表。

> pairs
$`1`
  Var1         Var2
1 up1          down1
4 up2          down2

$`2`
  Var1         Var2
3 up1          down2
2 up2          down1

我想将这些字符串折叠为两个字符串并将它们附加到矢量(或数据帧的列)

我已经声明了一个数据框(我想稍后再添加一个列),特别是使用stringsAsFactors = F

ratioGroups<-data.frame(ratioGroupName = character(), stringsAsFactors = F)
colnames(ratioGroups)<-c("groupName")

首先,我已经隔离了每个数据帧

group1<-as.data.frame(pairs$`1`)
group2<-as.data.frame(pairs$`2`)

然后我强迫其中的所有内容都是字符而不是因素,并将所有内容放回到数据框中。

group1<-as.data.frame(do.call(rbind,lapply(group1, as.character)))
group2<-as.data.frame(do.call(rbind,lapply(group2, as.character)))

然后我使用折叠将每一行折叠为一个单词

ratioNames1<-apply(group1,1,paste,collapse="_")
ratioNames2<-apply(group2,1,paste,collapse="_")

哪个工作正常。

> class(ratioNames1)
[1] "character"
> ratioNames1
                 V1                  V2 
"up1_down1"         "up2_down2" 
> 

然后我将每个转换为单行

ratioGroup1<-paste(ratioNames1[1],ratioNames1[2],sep="-")
ratioGroup2<-paste(ratioNames2[1],ratioNames2[2],sep="-")

再次,工作正常。然后我尝试将这些添加到初始数据帧。第一个工作正常但由于某种原因它会覆盖列名(??)

> ratioGroups
[1] groupName
<0 rows> (or 0-length row.names)
> ratioGroups<-rbind(ratioGroups,ratioGroup1)
> ratioGroups
  X.up1_down1.up2_down2.
1    up1_down1-up2_down2
> 

尝试添加另一行

> ratioGroups<-rbind(ratioGroups,ratioGroup2)
Warning message:
In `[<-.factor`(`*tmp*`, ri, value = "up1_up2-down2_down1") :
  invalid factor level, NA generated
> 

我有一个下午,我只能认为R特别是asinine。我强迫一切都是角色而不是水平,无处不在,它仍然会尝试将某些东西转化为某个因素。我猜测那里有一个我用它的命令的默认行为,因为原因将所有内容转换成一个因子。我知道哪里出错了?我之后看起来像是:

> ratioGroups
  groupName
  up1_down1-up2_down2
  up1_down2-up2_down1

我可以继续使用rbind附加名称。

0 个答案:

没有答案