Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.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_Shiny - Fatal编程技术网

在R中,如何自动以行而不是文本显示图像?

在R中,如何自动以行而不是文本显示图像?,r,shiny,R,Shiny,使用这些数据,我创建了一个矩阵,现在我需要用徽标替换列名和行名中的文本,以得到附加的结果 这里是一些标志图标 , 请用这个 代码如下: library(shiny) library(DT) testmatrix <- readxl::read_xlsx("testmatrix.xlsx") ui <- fluidPage( dataTableOutput("myTable") ) server <- function(input, output, session) { l

使用这些数据,我创建了一个矩阵,现在我需要用徽标替换列名和行名中的文本,以得到附加的结果 这里是一些标志图标 , 请用这个

代码如下:

library(shiny)
library(DT)

testmatrix <- readxl::read_xlsx("testmatrix.xlsx")

ui <- fluidPage(
dataTableOutput("myTable")
)
server <- function(input, output, session) {
logoList = data.frame(
name = c("opel", "kia", "bmw"),
logo = c"<img height='50' src='https://cdn.iconscout.com/icon/free/png-256/opel-2-202862.png'></img>",
  "<img height='50' src='https://www.logospng.com/images/88/royal-azure-blue-kia-icon-free-car-logo-88484.png'></img>",
  "<img height='50' src='https://cdn.iconscout.com/icon/free/png-256/bmw-4-202746.png'></img>"
),
stringsAsFactors = FALSE
)
myData = reactiveVal( {
logo_name_match <- merge(
x = data.frame(
row_id = 1:length(colnames(testmatrix)),
cols = rownames(testmatrix), 
stringsAsFactors = FALSE
), 
y = logoList, 
by.x = "cols", 
by.y = "name", 
all.x = TRUE
)
logo_name_match <- logo_name_match[with(logo_name_match, order(col_id)), ]
row_colnames <- ifelse(!is.na(logo_name_match$logo), logo_name_match$logo, logo_name_match$cols)
rownames(testmatrix) <- new_row testmatrix
})
output$myTable = renderDataTable({
myData = myData()
datatable(myData, escape = FALSE)
})}
库(闪亮)
图书馆(DT)

testmatrix您的代码中有一些错误。一旦数据框排列正确,在DataTable列中使用徽标图像似乎不是问题。下一步是了解如何在列名中使用图像或图标。还不知道怎么做,但如果我找到答案,我会更新下面的代码。注意,我添加了dplyr包,因为我重写了将图像链接与数据合并的部分。此外,我使用dput()将testmatrix的数据放在代码中,因此其他用户不需要下载数据来重现您的示例

更新:将图像添加到DataTable列名比预期的更容易。最后的img标签出了一些问题,所以我把它剪掉了。这似乎不是问题

library(shiny)
library(DT)
library(dplyr)
library(readxl)

testmatrix <-
  structure(
    list(
      brand = c(
        "kia",
        "vw",
        "mit",
        "bmw",
        "audi",
        "lw",
        "lada",
        "RR",
        "opel",
        "LBGN",
        "Jeep"
      ),
      g.rank = c(1, 2, 3, 6,
                 5, 4, 8, 10, 9, 12, 11),
      `No. Of Cars` = c(180, 159, 156, 164,
                        198, 191, 192, 155, 167, 185, 156),
      generation_z = c(37, 66,
                       72, 37, 2, 32, 19, 88, 49, 83, 43),
      generation_x = c(80, 59,
                       56, 64, 98, 91, 92, 55, 67, 85, 56),
      generation_y = c(94, 4,
                       1, 7, 47, 99, 34, 68, 81, 69, 97),
      other = c(1, 2, 3, 6, 5, 4,
                8, 10, 9, 12, 11)
    ),
    row.names = c(NA,-11L),
    class = c("tbl_df",
              "tbl", "data.frame")
  )

shinyApp(

ui = fluidPage(
  dataTableOutput("myTable")
),

server = function(input, output, session) {

  logoList = data.frame(
    name = c("opel", "kia", "bmw"),
    logo = c("<img height='50' src='https://cdn.iconscout.com/icon/free/png-256/opel-2-202862.png'></img>",
    "<img height='50' src='https://www.logospng.com/images/88/royal-azure-blue-kia-icon-free-car-logo-88484.png'></img>",
    "<img height='50' src='https://cdn.iconscout.com/icon/free/png-256/bmw-4-202746.png'></img>"
  ),
  stringsAsFactors = FALSE
  )

myData = reactive({

  testmatrix %>% 
    inner_join(logoList, by = c("brand" = "name")) %>% 
    dplyr::select(
           manufacturer = logo,
           `<img height='25' src='https://image.flaticon.com/icons/svg/63/63337.svg'>` = generation_z,
           everything(),
           -brand)

})

output$myTable = renderDataTable({ 

  print(myData())

  datatable(myData(), escape = FALSE)

})
}
)
库(闪亮)
图书馆(DT)
图书馆(dplyr)
图书馆(readxl)
测试矩阵%
内部连接(标识列表,由=c(“品牌”=“名称”))%>%
dplyr::选择(
制造商=标志,
``=第z代,
一切(),
-(品牌)
})
输出$myTable=renderDataTable({
打印(myData())
数据表(myData(),escape=FALSE)
})
}
)

您的代码中有一些错误。一旦数据框排列正确,在DataTable列中使用徽标图像似乎不是问题。下一步是了解如何在列名中使用图像或图标。还不知道怎么做,但如果我找到答案,我会更新下面的代码。注意,我添加了dplyr包,因为我重写了将图像链接与数据合并的部分。此外,我使用dput()将testmatrix的数据放在代码中,因此其他用户不需要下载数据来重现您的示例

更新:将图像添加到DataTable列名比预期的更容易。最后的img标签出了一些问题,所以我把它剪掉了。这似乎不是问题

library(shiny)
library(DT)
library(dplyr)
library(readxl)

testmatrix <-
  structure(
    list(
      brand = c(
        "kia",
        "vw",
        "mit",
        "bmw",
        "audi",
        "lw",
        "lada",
        "RR",
        "opel",
        "LBGN",
        "Jeep"
      ),
      g.rank = c(1, 2, 3, 6,
                 5, 4, 8, 10, 9, 12, 11),
      `No. Of Cars` = c(180, 159, 156, 164,
                        198, 191, 192, 155, 167, 185, 156),
      generation_z = c(37, 66,
                       72, 37, 2, 32, 19, 88, 49, 83, 43),
      generation_x = c(80, 59,
                       56, 64, 98, 91, 92, 55, 67, 85, 56),
      generation_y = c(94, 4,
                       1, 7, 47, 99, 34, 68, 81, 69, 97),
      other = c(1, 2, 3, 6, 5, 4,
                8, 10, 9, 12, 11)
    ),
    row.names = c(NA,-11L),
    class = c("tbl_df",
              "tbl", "data.frame")
  )

shinyApp(

ui = fluidPage(
  dataTableOutput("myTable")
),

server = function(input, output, session) {

  logoList = data.frame(
    name = c("opel", "kia", "bmw"),
    logo = c("<img height='50' src='https://cdn.iconscout.com/icon/free/png-256/opel-2-202862.png'></img>",
    "<img height='50' src='https://www.logospng.com/images/88/royal-azure-blue-kia-icon-free-car-logo-88484.png'></img>",
    "<img height='50' src='https://cdn.iconscout.com/icon/free/png-256/bmw-4-202746.png'></img>"
  ),
  stringsAsFactors = FALSE
  )

myData = reactive({

  testmatrix %>% 
    inner_join(logoList, by = c("brand" = "name")) %>% 
    dplyr::select(
           manufacturer = logo,
           `<img height='25' src='https://image.flaticon.com/icons/svg/63/63337.svg'>` = generation_z,
           everything(),
           -brand)

})

output$myTable = renderDataTable({ 

  print(myData())

  datatable(myData(), escape = FALSE)

})
}
)
库(闪亮)
图书馆(DT)
图书馆(dplyr)
图书馆(readxl)
测试矩阵%
内部连接(标识列表,由=c(“品牌”=“名称”))%>%
dplyr::选择(
制造商=标志,
``=第z代,
一切(),
-(品牌)
})
输出$myTable=renderDataTable({
打印(myData())
数据表(myData(),escape=FALSE)
})
}
)

亲爱的,我需要将文本替换为徽标,每个表my包含几行,因此必须从excel工作表到仪表板自动“查找并替换”,而不是逐个替换亲爱的,我需要将文本替换为徽标,每个表my包含几行,因此必须自动“查找并替换”从excel工作表到仪表板不是一个接一个感谢您的努力,请您将其修改为从excel工作表中提取,因为这只是一个样本,实际数据范围更大,必须是动态的和自动更新只需在您的代码中替换
textmatrix的右侧再次感谢TimTeaFan,非常感谢:)在此代码名=(c(,,,,,)必须等于链接的数量,换句话说,如果其中一个品牌没有超链接,整个原始数据将消失。并且读取每一行并自动更新不是动态的。请容忍,因为我使用了一个内部连接行,它不是登录列表消失,但很容易与ifelse语句一起变为左连接这将以文本形式返回缺少符号的制造商的名称。我稍后将更新该名称。您要动态更新表的部分需要详细说明。在应用程序开始时提供了哪些数据?应用程序运行时数据是否会更改?如果是,如何更改?…谢谢您的努力,请您修改它要从excel工作表中提取,因为这只是一个示例,实际数据范围更大,并且必须是动态和自动更新的。只需在代码中替换
textmatrix的右侧。再次感谢TimTeaFan,非常感谢:)在此代码名中=(c(,,,,,,,,)必须等于链接的数量,换句话说,如果其中一个品牌没有超链接,整个原始数据将消失。并且读取每一行并自动更新不是动态的。请容忍,因为我使用了一个内部连接行,它不是登录列表消失,但很容易与ifelse语句一起变为左连接这将以文本形式返回缺少符号的制造商的名称。我稍后将更新该名称。要动态更新表的部分,您需要详细说明。在应用程序开始时提供了哪些数据?应用程序运行时数据是否会更改?如果是,如何更改?…等等