我的猜测是使用ddply很容易,但我仍然是R的新手,无法理解它.
我有一个看起来像这样的data.frame
txt <- "label var1 var2 var3 var4 var5 var6 var7
lab1 401 80 57 125 118 182 83
lab2 72 192 80 224 182 187 178
lab3 7 152 134 104 105 80 130
lab4 3 58 210 30 78 33 87
lab5 1 2 3 1 1 2 6"
mydata <- read.table(textConnection(txt), sep = " ", header = TRUE)
Run Code Online (Sandbox Code Playgroud)
这样做我可以一次将一个变量转换为百分比
mydata$var1 <- round(prop.table(mydata$var1),3)*100
Run Code Online (Sandbox Code Playgroud)
但是如何在一个笔划中的data.frame中使用所有变量(var1:var7)呢?
注意:它进入一个函数,其中变量的长度和数量不时变化,因此代码应该对此敏感.
先感谢您
我正在尝试制作一个函数,它将为我提供一个可以用于indesign,illustrator或inkscape的情节.在尝试这样做时,我遇到了两个我无法解决的问题.
1)设置我的绘图的宽度和高度(或只是grobTable):我得到的输出非常小,当在illustrator中升级它时,字体跟随并变为大的方式.因此,我想制作手动定义的宽度和高度的图.
2)有时标题,注释和rownames会"放错位置"(有关详细信息,请参阅第1和第2小节之间的区别).当rownames很短时就会发生这种情况.
library(gridExtra)
library(ggplot2)
data(diamonds)
## plot function
kryds.row <- function(x,y, p=100, decor="%", digits=3,
titel="", note="", red=219, green=55, blue= 153){
c <- table(x, y)
s <- as.character(sum(c))
s <- paste("Antal svarpersoner=", s, sep=" ")
j <- prop.table(c,1)
r <- c(rownames(j),"Total")
k <- c(colnames(j), "Total")
j <- addmargins(j, margin =2, FUN = sum)
j <- round(j, digits)
j[]<-paste(j*p, decor, sep=" ")
farve <- rgb(red,green,blue, maxColorValue =255)
table <- tableGrob(j,
cols = k,
gpar.coretext = gpar(fontsize = 12),
gpar.coltext = gpar(fontsize …Run Code Online (Sandbox Code Playgroud) 是否可以在这样的字符串中插入换行符,以便自动调整以便不分割单词?
nif <- as.character(c("I am a string", "So am I",
"I am also a string but way to long"))
Run Code Online (Sandbox Code Playgroud)
我在帖子中发现了这个代码,但是它会分割单词并在每个字符串之后添加一个换行符,我想避免
gsub('(.{1,20})', '\\1\n',nif)
Run Code Online (Sandbox Code Playgroud)
我想要的输出是这样的:
"I am a string" "So am I" "I am also a string but \n way to long"
Run Code Online (Sandbox Code Playgroud)