【发布时间】:2021-08-20 23:46:25
【问题描述】:
每次我使用 read_excel 加载 .xlsx 文件并将其传递到数据框(比如说命名数据)时,列标题都会得到“。”插入其中。例如,对于具有三列“fruit 1”、“fruit 2”、“fruit 3”的 .xlsx 文件,将变为“fruit.1.”、“fruit.2.”、“fruit.3.”。为了删除它,我将使用以下代码 -
colnames(data) <- trimws(gsub("."," ",colnames(data), fixed = TRUE))
但是在我使用 fileInput 按钮上传 .xlsx 文件的 Shiny 应用程序中使用相同的方法,我无法使用这些列。示例 -
fruits <- reactive({
req(input$file)
inFile <- input$file
if(is.null(inFile))
return(NULL)
fruits<-read_excel(paste(inFile$datapath, ".xlsx", sep=""), sheet = 1)
})
data <- reactive({
req(fruits())
data<-data.frame(fruits())
data<- data[2:nrow(data),]
colnames(data) <- trimws(gsub("."," ",colnames(data), fixed = TRUE))
})
if(any(is.na(data()[data()$"fruit 1" ==unique(data()$"fruit 1")[1],c("fruit 2","fruit 3")]))){
print("There are blank fruit 2/fruit 3 names")
}else{
print("There are no blank fruit 2/fruit 3 for the first batch")
}
我得到的错误是 Warning: Error in $: $ operator is invalid for atomic vectors 对于 if 行。谁能告诉我哪里出错了。
【问题讨论】:
-
您可以使用
data()[["fruit 1"]]。此外,您应该在reactive中使用return(data),即colnames(data) <- trimws(gsub("."," ",colnames(data), fixed = TRUE)); data}) -
这解决了我的问题!你能说出 [[]] 是做什么的吗?我仍在使用 $ 但返回的数据解决了它。
-
你能帮我解决这个question吗?
-
好像已经回答了。谢谢你的链接
-
您能否让回答者知道这些细节。我知道他擅长回答闪亮的问题