首页 > 解决方案 > R不必要地将字符转换为日期而不是数字

问题描述

我将争论从 shell 脚本传递到 R 脚本和 R。

library(rLandsat) #used later in the script
args<-commandArgs(trailingOnly=TRUE)

max_date = Sys.Date()-as.numeric(args[1])
min_date = Sys.Date()-(as.numeric(args[1])+as.numeric(args[2]))
path<-as.numeric(as.character(args[4]))
row<-as.numeric(as.character(args[5]))
cloud<-as.numeric(as.character(args[6]))
foldername<-as.character(args[7])
for(i in args){
    print(typeof(i))
}
print(args)
print(c(max_date,min_date,path,row,cloud,foldername))
for(i in c(max_date,min_date,path,row,cloud,foldername)){
    print(typeof(i))
}

并且 R 出于某种原因将参数转换为某种类型的仍然是字符的日期。这是脚本的输出。args[3]稍后使用,但我可能也应该检查一下。我知道 thearg已经是一个字符,但它只返回了相同的值as.numeric()forpath rowcloud。前两个参数正确返回,"2016-12-31" "2016-01-01"但其他我希望与返回的原始参数具有相同的值。将签出list()而不是c()

[1] "character"
[1] "character"
[1] "character"
[1] "character"
[1] "character"
[1] "character"
[1] "1048"        "365"         "Yellowstone" "38"          "29"
[6] "20"          "2016"
[1] "2016-12-31" "2016-01-01" "1970-02-08" "1970-01-30" "1970-01-21"
[6] "1975-07-10"
[1] "character"
[1] "character"
[1] "character"
[1] "character"
[1] "character"
[1] "character"

标签: rlinux

解决方案


c()导致错误。见 MichaelChirico 的评论


推荐阅读