Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R “如何有条件地格式化数据表中的字母?_R - Fatal编程技术网

R “如何有条件地格式化数据表中的字母?

R “如何有条件地格式化数据表中的字母?,r,R,我是R的新手,我目前正在尝试制作一个表格,显示2天之间的变化是什么,一旦计算出这个变化,如果它是负数,海就会变成红色字母,如果不是绿色的话 标题:区域商业委员会 输出: flexdashboard::flex_仪表板: 方向:列 垂直布局:填充 目前,color=ifelse'VARIACION'1,你可以有多个间隔。你只需要比切点多一种颜色,例如,尝试像color=sty这样的方法LeIntervalC0300000,cred,绿色,蓝色在我下面的示例中 以下是修改自的工作示例: 请进一步注意

我是R的新手,我目前正在尝试制作一个表格,显示2天之间的变化是什么,一旦计算出这个变化,如果它是负数,海就会变成红色字母,如果不是绿色的话

标题:区域商业委员会 输出: flexdashboard::flex_仪表板: 方向:列

垂直布局:填充 目前,color=ifelse'VARIACION'<-0、'ed1c16'、'0ca649'正在评估字符串VARIACION是否小于0。虽然这不是一个特别有意义的问题,但在所有情况下,R确实会将其评估为FALSE,从而以绿色打印结果

更一般地说,在这种情况下,您不想使用ifelse,而是使用formatStyle'VARIACION',color=styleInterval0,cred,green之类的东西

这里的关键是styleInterval,它定义了切点和间隔的颜色。当你把一个切点放在0和两种颜色上时,它在切点之前使用第一种颜色,在切点之后使用第二种颜色。通过切点>1,你可以有多个间隔。你只需要比切点多一种颜色,例如,尝试像color=sty这样的方法LeIntervalC0300000,cred,绿色,蓝色在我下面的示例中

以下是修改自的工作示例:

请进一步注意,使用ifelse的更合适的实现仍然失败,因为它返回一个向量,并且颜色选项不需要向量,因此它不会抛出错误,也不会打印。因此,这里再次不要使用ifelse


我有代码,我是新来的,我已经上传了示例代码,我希望这可以理解。这应该可以帮助你:我已经这样做了,但只有整个变体列将我涂成绿色,如果它是负数,它就没有条件,就好像它没有检测到负数背景色不工作一样?你能向我解释一下请提供更多详细信息:color=styleInterval0,cred,green和color=ifelsem[,A]<0,red,green,我提前感谢您对此类内容的说明通常最好使用R帮助文件。键入?styleInterval将打开帮助页面。
################## librerias #####################
library(flexdashboard)
library(tidyverse)
library(readxl)
library(shiny)
library(formattable)
library(DT)
library(htmlTable)
library(sqldf)
library(ggplot2)
library(data.table)
library(dplyr)
library(tidyr)
library(shinydashboard)

##################  Datos   #######################
base1     <- read_excel("C:/Karlo disco duro/AVANCE.xlsx",sheet = "Base1")
base2     <- read_excel("C:/Karlo disco duro/AVANCE.xlsx",sheet = "Base2")
finmes <- read_excel("C:/Karlo disco duro/AVANCE.xlsx",sheet = "Finmes")

Green0 = "#DeF7E9"
Green = "#71CA97"
Red = "#ff7f7f"

data1<-subset(base1,select = c("TipoCredito","SaldoCapital"))
data2<-subset(base2,select = c("TipoCredito","SaldoCapital"))
finmes1<-subset(finmes,select = c("TipoCredito","SaldoCapital"))
final1<-data.frame(sqldf(
  "select TipoCredito, sum(SaldoCapital) as SALDO from data1 group by TipoCredito"
))
final2<-data.frame(sqldf(
  "select TipoCredito, sum(SaldoCapital) as SALDO from data2 group by TipoCredito"
))
finmes2<-data.frame(sqldf(
  "select TipoCredito, sum(SaldoCapital) as SALDO from finmes1 group by TipoCredito"
))

tablaa<-data.frame(final1)
tablab<-data.frame(final2)
tablafinmes<-data.frame(finmes2)

final3<-data.frame(sqldf(
  "select A.TipoCredito, A.SALDO as '23Agosto', B.SALDO as '24Agosto', (B.SALDO - A.SALDO) as VARIACION
  from tablaa A
  join tablab B on A.TipoCredito = B.TipoCredito
  group by A.TipoCredito"
))

finalfinmes <- data.frame(sqldf(
  "select F.TipoCredito, F.SALDO as '31Julio', B.SALDO as '24Agosto', (B.SALDO - F.SALDO) as VARIACION
  from tablafinmes F
  join tablab B on F.TipoCredito = B.TipoCredito
  group by F.TipoCredito"
))

my.options <- list (autoWidth = FALSE,
                   searching = FALSE,
                   ordering = FALSE,
                   lengthChange = FALSE,
                   lengthMenu = FALSE,
                   pageLength = FALSE,
                   paging = FALSE,
                   info = FALSE)
##final<-formattable(final3,list(VARIACION = color_tile("red", "green")))

##final3.1<-formattable(final3, list(`VARIACION`=formatter("span", style = x ~ style(color = ifelse(x < 0, "red", "green")))))
##finalfinmes1<-formattable(finalfinmes, list(`VARIACION`=formatter("span", style = x ~ style(color = ifelse(x < 0, "red", "green")))))

Tablafinal<-datatable(final3,options = list(autoWidth = TRUE, columnDefs = 
                      list(list(width = '190px', targets = c(1,2,3,4))),pageLength = 7,searching = TRUE,
                   ordering = TRUE,
                   lengthChange = TRUE,
                   lengthMenu = FALSE,
                   pageLength = FALSE,
                   paging = FALSE,
                   info = FALSE), colnames = c('Tipo de credito','23 de Agosto','24 de Agosto', 'Variacion Diaria')) 

Tablafinalfinmes<-datatable(finalfinmes,options = list(autoWidth = TRUE, columnDefs = 
                      list(list(width = '190px', targets = c(1,2,3,4))),pageLength = 7,searching = TRUE,
                   ordering = TRUE,
                   lengthChange = TRUE,
                   lengthMenu = FALSE,
                   pageLength = FALSE,
                   paging = FALSE,
                   info = FALSE),colnames = c('Tipo de credito','31 de Julio','24 de Agosto', 'Variacion fin de mes'))
##%>% formatStyle('VARIACION',color = ifelse('VARIACION'>0,'Green','Red')))

##Tablafinal$VARIACION <- ifelse(Tablafinal$VARIACION < 0, 1, ifelse(Tablafinal$VARIACION > 0, 2,3))

Tablafinal1<- formatStyle(Tablafinal,
                        columns = c(4),
                        fontFamily = "Arial",
                        fontSize = "16px", 
                        color = ifelse('VARIACION'< -0,'#ed1c16','#0ca649'))
                       ## backgroundColor = styleEqual(c(1, 2,3), c('green', 'yellow','red')))
                        ##color = styleEqual(c(-1,0,1),c('green','blue','Yellow')))

Tablafinalfinmes1<- formatStyle(Tablafinalfinmes,
                        columns = c(4),
                        fontFamily = "Arial",
                        fontSize = "16px",
                        color = ifelse('VARIACION'< -0,'#ed1c16','#0ca649'))

Tablafinal1$VARIACION <- ifelse(Tablafinal1$VARIACION < 0, 1, 
                    ifelse(Tablafinal1$VARIACION > 0, 2))

ab <- Tablafinal1 %>% formatCurrency (c('X23Agosto','X24Agosto','VARIACION'), 's/ ') %>% formatStyle('TipoCredito',target = 'row',backgroundColor = styleEqual(c('CONSUMO NO REVOLVENTE','CONSUMO REVOLVENTE','HIPOTECARIO'),c('#f8fb63','#f8fb63','#f8fb63'))) %>% formatStyle('VARIACION',fontWeight = 'bold',fontSize = "13px") 

##ab1 <- ab %>% formatStyle(columns = c('VARIACION'),valueColumns = c('VARIACION'),target='row',Color = styleEqual(c(-1,1),
##                                                                      c('red','green')))

tf <- Tablafinalfinmes1 %>% formatCurrency (c('X31Julio','X24Agosto','VARIACION'),'s/ ')%>% formatStyle('TipoCredito',target = 'row',backgroundColor = styleEqual(c('CONSUMO NO REVOLVENTE','CONSUMO REVOLVENTE','HIPOTECARIO'),c('#f8fb63','#f8fb63','#f8fb63'))) %>% formatStyle('VARIACION',fontWeight = 'bold',fontSize = "13px")

##ui<- fluidPage (navlistPanel(tabPanel("Variacion Diaria",ab),
##                  tabPanel("Variacion Mensual")))
##ui<-formattable(ab, list(VARIACION = color_tile("red", "green")))
ui<- fluidPage (tabsetPanel(tabPanel("Variacion Diaria",ab),
              tabPanel("Variacion Mensual",tf)))
ui
library(DT)
m = cbind(matrix(rnorm(60, 1e5, 1e6), 20), runif(20), rnorm(20, 100))
m[, 1:3] = round(m[, 1:3])
m[, 4:5] = round(m[, 4:5], 7)
colnames(m) = head(LETTERS, ncol(m))
head(m)

datatable(m) %>% 
  formatCurrency(c('A', 'C')) %>% 
  formatStyle('A',  color = styleInterval(0, c("red", "green")))
#this fails
datatable(m) %>% 
  formatCurrency(c('A', 'C')) %>% 
  formatStyle('A',  color = ifelse(m[,"A"] < 0, "red", "green"))