t***s 发帖数: 4666 | 1 [B, I, J] = unique(A, 'rows');
IC = setdiff((1:size(A,1))', I);
[C, IB, IA] = intersect(B, A(IC,:), 'rows');
ID = setdiff((1:size(B,1))', IB);
D = B(ID,:); |
|
s*****n 发帖数: 2174 | 2 setdiff 挺好的, 简明易懂, 一般用途足可以了, 唯一的缺点可能是速度稍慢. 如果
你非常在意执行效率(速度), 可以考虑is.element.
> list1 <- as.Date(c("2004-11-12", "2004-11-17", "2004-11-18", "2004-11-23"))
> list2 <- seq(from = min(list1), to = max(list1), by = "1 day")
>
> system.time(for (i in 1:10000) setdiff(list2, list1))
[1] 2.46 0.00 2.47 NA NA
> system.time(for (i in 1:10000) list2[!is.element(list2, list1)])
[1] 0.67 0.00 0.67 NA NA |
|
O*****y 发帖数: 222 | 3 a <- read.csv("A.csv", header=TRUE)
b <- read.csv("B.csv", header=TRUE)
new1 <- cbind(a, b[, setdiff(colnames(b), colnames(a))])
new2 <- b[, setdiff(colnames(b), colnames(a))] |
|
|
|
r*******y 发帖数: 1081 | 6 如果用matlab里面的 nchoosek 和 setdiff这两个函数,
可能用穷举法并不是太坏。 |
|
t**i 发帖数: 688 | 7 例如给定:2004-11-12,2004-11-17,2004-11-18,2004-11-23的话,那么,
2004-11-13, 2004-11-14,2004-11-15,2004-11-16,2004-11-19,2004-11-20,
2004-11-21,2004-11-22
就是想要的。
想要用R来写。我用setdiff。可是对于给定的首尾日期,如何列举所有的日期是个问题。想看看有没有好的方法。 |
|
q**j 发帖数: 10612 | 8 what is wrong with setdiff()? i do not see many alternatives. |
|
|
A*****n 发帖数: 243 | 10 n^2的复杂度,好像没有更高的比较方法了吧,毕竟还是得一个个比过去。如果用%in%,
match什么的,应该也和setdiff差不多吧。 |
|
|
c***z 发帖数: 6348 | 12 能详解一下么
我倒是找到了一个法子
首先列出目录下的文件和子目录,文件直接下载,子目录调用本函数(递归)
但是下载下来的文件大小不对,大侠能帮忙看看么
library("RCurl")
# ==========================================================================
====
# Function that downloads files from URL
# ==========================================================================
====
fdownload <- function(sourcelink) {
# sourcelink <- ftp.root # test, root level
# sourcelink <- dirs[1] # test, second level
targetlink <- paste(dropbox.root, substr(sourcelink, nchar(ftp.root)+... 阅读全帖 |
|
c***z 发帖数: 6348 | 13 I got a working version now:
#=====================================================================
# Function that downloads files from URL
#=====================================================================
fdownload <- function(sourcelink) {
# sourcelink <- ftp.root # test, root level
# sourcelink <- dirs[1] # test, second level
targetlink <- paste(dropbox.root, substr(sourcelink, nchar(ftp.root)+1,
nchar(sourcelink)), sep = '')
# list of contents
filenames <- getURL(sourceli... 阅读全帖 |
|