从R中的“ cat”输出中打印引号括起来的字符串

时间:2019-01-17 20:49:34

标签: r

我有一个这样的数据框:

df<-data.frame(S1=c(rep("A:A",10),rep("G:G ",10)),
           S2=c(rep("A:A",10),rep("G:G",10)),
           S3=c(rep("A:A",10),rep("T:T", 10)),
           stringsAsFactors = FALSE)

您可能已经注意到S1上的“ G:G”在末尾有一个空格,就是故意的。

我有一个函数,该函数将“唯一”应用于数据帧的所有列,并返回具有每列所有唯一值的表。

功能:

loop.unique<-function(df){
     w<-create.df(x=capture.output(for (i in colnames(df)){
        cat(unique(df[[i]]),"\n")}),
     y=c("unique.vals"))
     z<-create.df(x=colnames(df),y=c("col"))
     v<-cbind(z,w)
    return(v)
}

输出:

   col unique.vals
1  S1   A:A G:G  
2  S2    A:A G:G 
3  S3    A:A T:T

在较大的数据集上,S1上“ GG”字符串的明显区别不是那么明显,因此我希望输出看起来更像“ print(unique(df)””,如该函数所示:

loop.unique.extra<-function(df){
    for (i in colnames(df)){
       print(unique(df[[i]]),na.print="<NA>")
 }
}

哪个给出此输出:

[1] "A:A"  "G:G "
[1] "A:A" "G:G"
[1] "A:A" "T:T"

在这里,我可以清楚地看到S1上GG字符串末尾的多余空间

我想看到的是这样的:

1 S1 "A:A"  "G:G "
2 S2 "A:A" "G:G"
3 S3 "A:A" "T:T"

0 个答案:

没有答案