我正在上传,正在我闪亮的应用程序中读取一个文本文件。以下是我如何在闪亮的应用程序中阅读它:
data <- reactive({
req(input$file)
df <- read.table(file=input$file$datapath[input$file$name==input$Select], skip = 15, sep=input$sep, header = input$header, stringsAsFactors = input$stringAsFactors)
updateSelectInput(session, inputId = 'xcol', label = 'X Variable',
choices = names(df), selected = names(df)[1])
updateSelectInput(session, inputId = 'ycol', label = 'Y Variable',
choices = names(df), selected = names(df)[2])
return(df)
})
现在,我想删除/跳过上传数据集中具有空单元格的行。
我的尝试:
df[!apply(df == "", 1, all),]
但是,它不起作用。
在使用read.table
时,是否有不同的方法?
@maydin的链接适用于NA
值,但您需要更多的信息来检查特定的值(即""
,空字符串(。
df <- data.frame(a=c('a','b',''), b="")
rowSums(df != "") == 0
# [1] FALSE FALSE TRUE
这告诉哪些行的行上正好有0个非空字符串。如果其中一列的字符串长度超过零,那么它将弹出为false。
使用它,我们将只查找具有1个或多个非空字符串的行。
df[rowSums(df != "") > 0, ]
# a b
# 1 a
# 2 b
我得到了答案:
这是代码:原始数据:
data <- reactive({
req(input$file)
df <- read.table(file=input$file$datapath[input$file$name==input$Select], skip = 15, sep=input$sep, header = input$header, stringsAsFactors = input$stringAsFactors, skipNul = TRUE, na.strings = "")
updateSelectInput(session, inputId = 'xcol', label = 'X Variable',
choices = names(df), selected = names(df)[1])
updateSelectInput(session, inputId = 'ycol', label = 'Y Variable',
choices = names(df), selected = names(df)[2])
return(df)
})
删除空单元格行的数据:
data_1 <- reactive({
req(input$file)
x <- data()[, c(input$xcol, input$ycol)]
x[x == ""] <- NA
M <- na.omit(x)
return(M)
})