(我不确定这是否是r或shell问题,请原谅添加两个标记,如果您认为我应该删除一个标记,请评论,我会这样做)
我在rstudio.example.com上有一个亚马逊托管的r版本。我已经编写了两个脚本,当我从Rstudio接口中获取它们时,它们都运行良好。
当我ssh到脚本目录并从那里运行时,脚本会生成一些错误。
第一个脚本的目的是qdap::检查数据帧中一列文本的拼写,然后获取该拼写错误的频率以及拼错单词的示例:
library(tidyverse)
library(qdap)
# example data
exampledata <- data.frame(
id = 1:5,
text = c("cats dogs dgs cts oranges",
"orngs orngs cats dgs",
"bannanas, dogs",
"cats cts dgs bnnanas",
"ornges fruit")
)
# check for unique misspelt words using qdap
all.misspelts <- check_spelling(exampledata$text) %>% data.frame %>% select(row:not.found)
unique.misspelts <- unique(all.misspelts$not.found)
# for each misspelt word, get the first instance of it appearing for context/example of word in a sentence
contexts.misspellts.index <- lapply(unique.misspelts, function(x) {
filter(all.misspelts, grepl(paste0("\\b",x,"\\b"), not.found))[1, "row"]
}) %>% unlist
# join it all together in a data farem to write to a csv
contexts.misspelts.vector <- exampledata[contexts.misspellts.index, "text"]
freq.misspelts <- table(all.misspelts$not.found) %>% data.frame() %>% mutate(Var1 = as.character(Var1))
misspelts.done <- data.frame(unique.misspelts, contexts.misspelts.vector, stringsAsFactors = F) %>%
left_join(freq.misspelts, by = c("unique.misspelts" = "Var1")) %>% arrange(desc(Freq))
write.csv(x = misspelts.done, file="~/csvs/misspelts.example_data_done.csv", row.names=F, quote=F)
最终的数据帧如下所示:
> print(misspelts.done)
unique.misspelts contexts.misspelts.vector Freq
1 dgs cats dogs dgs cts oranges 3
2 cts cats dogs dgs cts oranges 2
3 orngs orngs orngs cats dgs 2
4 bannanas bannanas, dogs 1
5 bnnanas cats cts dgs bnnanas 1
6 ornges ornges fruit 1
当我在RStudio的云实例上运行这个命令时,它不会有任何问题,并且在最后一行代码中指定的目录中生成csv文件。
当我在linux中运行这个程序时,我得到:
myname@ip-10-0-0-38:~$ r myscript.R
ident, sql
During startup - Warning message:
Setting LC_CTYPE failed, using "C"
During startup - Warning message:
Setting LC_CTYPE failed, using "C"
During startup - Warning message:
Setting LC_CTYPE failed, using "C"
During startup - Warning message:
Setting LC_CTYPE failed, using "C"
During startup - Warning message:
Setting LC_CTYPE failed, using "C"
During startup - Warning message:
Setting LC_CTYPE failed, using "C"
During startup - Warning message:
Setting LC_CTYPE failed, using "C"
During startup - Warning message:
Setting LC_CTYPE failed, using "C"
Error in grepl(paste0("\\b", x, "\\b"), not.found) :
object 'not.found' not found
In addition: Warning message:
In data.matrix(data) : NAs introduced by coercion
myname@ip-11-0-0-28:~/rscripts$
我的
grepl()
函数似乎有问题。但是当在Rstudio中运行时,它工作得很好,而不是从shell调用脚本时。但我也在一个基于dplyry动词(filter)的单独脚本中发现了其他错误。
如果有人发现这个问题,请帮忙!如果需要更多信息,请告诉我,我会补充。
另外,我试着在shell中本地运行这个脚本,结果成功了。这可能是我的亚马逊服务器的问题吗?
最佳答案
Shell中的文件:
shell$ r < input.R > output.CSV
我不确定是否在R上工作。
你可以试试!
关于r - 通过shell vs.rstudio调用时脚本未运行,会生成r错误,在gui中运行时不会出现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45135055/