精简版:
在尝试将数据帧的单行转换为字符向量时,我不理解as.character的行为.
> mydf <- data.frame("myvar1"=c("mystring","2"),"myvar2"=c("mystring","3"))
> mydf # nice!
myvar1 myvar2
1 mystring mystring
2 2 3
> as.character(mydf[1,])
[1] "2" "2"
> as.character(as.vector(mydf[1,]) )
[1] "2" "2"
Run Code Online (Sandbox Code Playgroud)
也许有人可以给我一个解释最后2个输出线和正确的方法?非常感谢.
背景/目的:
我想使用lre()它来检测数据帧的一行中的连续出现的值(具有不同数据类型的列).
问题:lre()需要一个向量,向量需要一个确定的数据类型(整数,字符,因子,......).我的想法是将数据帧行转换为字符向量,以避免通过转换丢失数据.
假设我有一个包含 10 个数字变量 V1-V10(列)和多行(案例)的数据框。
我希望 R 做的是:对于每种情况,给我一组变量中某个值出现的次数。
例如,V2、V3、V6 的单行中数值 99 的出现次数,显然其最小值为 0(三者都没有值 99),最大值为 3(三者都有值 99)。
我真的在寻找与 SPSS 函数COUNT等效的函数:“COUNT创建一个数值变量,对于每种情况,它都会计算变量列表中相同值(或值列表)的出现次数。 ”
我想过table()和图书馆 plyr's count(),但我无法真正弄清楚。首选矢量化计算。非常感谢!
我做错了什么,或者为什么下面的例子不起作用?leafletProxy()我正在尝试使用选项使传单标记簇插件在 R Shiny 应用程序中使用iconCreateFunction。该插件是否无法使用 向地图添加自定义图标标记leafletProxy()?
当我按下第一个按钮并缩小下面的示例时,我收到一条错误消息:
类型错误:this._group.options.iconCreateFunction 不是函数
我尝试从markercluster文档中复制原始示例:
library(shiny)
library(dplyr)
library(leaflet)
ui <- fluidPage(
titlePanel("Hello Shiny!"),
sidebarLayout(
sidebarPanel(
actionButton(inputId = "my_button1",
label = "Use leafletProxy()"),
actionButton(inputId = "my_button2",
label = "Use renderLeaflet()")
),
mainPanel(
leafletOutput(
outputId = "map",
width = "100%",
height = "300px"
)
)
)
)
server <- function(input, output, session) {
some_data <- data.frame(
"lon"=c(4.905167,4.906357,4.905831),
"lat"=c(52.37712,52.37783,52.37755),
"number_var"=c(5,9,7),
"name"=c("Jane","Harold","Mike"),
stringsAsFactors = F
)
output$map <- renderLeaflet({
return(
leaflet(data = some_data[0,]) …Run Code Online (Sandbox Code Playgroud) 如何捕获正在进行的system()操作的输出并将其“实时”传输到 Shiny 前端?
intern=T 在字符向量中捕获整个输出,但我更喜欢“听”系统输出。
library(shiny)
ui <- fluidPage(
titlePanel("Stream the system output"),
sidebarLayout(
sidebarPanel(
actionButton("btn1",label = "Let's stream")
),
mainPanel(
textOutput("textstream_output")
)
)
)
server <- function(input, output, session) {
rv <- reactiveValues("textstream"=c(""))
output$textstream_output <- renderText({
rv$textstream
})
observeEvent(input$btn1,{
# problem: is evaluated after finish, not during operation
rv$textstream <- system("Rscript -e \"for(i in 1:5){ print(Sys.time()); Sys.sleep(1); };\"",
intern = T)
})
}
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)
使用 运行system命令时intern=F,R 控制台每秒持续更新一次。我怎样才能在 …
在session$userDataShiny 应用程序中获取/设置值的正确方法是什么?该文件指出:
userData:应用程序作者和模块/包作者的环境,用于存储他们想要的任何特定于会话的数据。
并且userData仅在用户登录后在 Shiny 服务器上的应用程序中执行时才可用?
我想工作,session$userData在运行从RStudio IDE内的应用程序,但session$userData是NULL,和我得到的错误说:“不能添加绑定到锁定的环境。”
library(shiny)
ui <- fluidPage()
server <- function(input, output, session) {
# Returns NULL
print(session$userData)
# will throw an error
session$userData$test <- "test value"
attr(session$userData,"test") <- "test value"
}
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)
可能相关:
当变量名称与 data.table 中的现有列名称相同时,如何使用变量对 data.table 进行子集化?它适用于get("varname",pos = 1),但是否有更强大/灵活的解决方案?
library(data.table)
my_data_frame <- data.frame(
"V1"=c("A","B","C","A"),
"V2"=c(1, 2, 3, 4),
stringsAsFactors = FALSE
)
V1 <- "A"
my_data_table <- as.data.table(my_data_frame)
# Can I improve this a bit? I want rows where V1 == "A", but use V1 in the statement
my_data_table[ my_data_table$V1 == get("V1", pos = 1), ]
Run Code Online (Sandbox Code Playgroud)
重命名V1不是一种选择。
更新:我不认为这是 100% 重复。这个问题的公认答案对于我的问题是不可接受的,因为它使用了get我不想使用的显式,如评论中所述。