获取"sort.list(bx[m$xi])中的错误:对于"sort.list"错误,'x'必须是原子的,在R中出现"合并"



我想按时加入两个表。输入文件有一列表示 hh:mm:ss,一列表示 am/pm。我似乎已成功创建了一个带有日期信息的新列,但我无法加入它。错误消息对我来说毫无意义,也没有指向我给出的任何内容。

这:

t1 <- read.table("~/SEQ-1066/sar.r.54043.txt",header=TRUE)
t2 <- read.table("~/SEQ-1066/sar.q.54043.txt",header=TRUE)
t1$pt <- strptime(paste(t1$time, t1$AM),"%I:%M:%S %p")
t2$pt <- strptime(paste(t2$time, t2$AM),"%I:%M:%S %p")
t <- merge(x=t1,y=t2,by="pt")

结果在:

> t1 <- read.table("~/SEQ-1066/sar.r.54043.txt",header=TRUE)
> t2 <- read.table("~/SEQ-1066/sar.q.54043.txt",header=TRUE)
> t1$pt <- strptime(paste(t1$time, t1$AM),"%I:%M:%S %p")
> t2$pt <- strptime(paste(t2$time, t2$AM),"%I:%M:%S %p")
> t <- merge(x=t1,y=t2,by="pt")
Error in sort.list(bx[m$xi]) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?

谢谢R提供如此易于理解的错误消息。

显然,strptime的数据类型不可排序或用作连接索引,因此使用 as.POSIXct 进行强制转换是有效的。

t1 <- read.table("~/SEQ-1066/sar.r.54043.txt",header=TRUE)
t2 <- read.table("~/SEQ-1066/sar.q.54043.txt",header=TRUE)
t1$pt <- as.POSIXct(strptime(paste(t1$time, t1$AM),"%I:%M:%S %p"), tz = "GMT")  
t2$pt <- as.POSIXct(strptime(paste(t2$time, t2$AM),"%I:%M:%S %p"), tz = "GMT")  
t <- merge(x=t1,y=t2,by="pt")

在这里找到了实际的解决方案,谢谢恩里克·达拉祖纳。

最新更新