矢量比較正如我的R中的程序的一部分,我必須比較對句子的一些功能(在一個IM表示這裏與相同數目的比較的句子的一個巨大的數字單詞和這兩個句子之間是否只有一個不同的單詞)優化代碼中的R爲在data.table
爲了使事情更快,我已經將所有單詞轉換爲整數,所以我正在處理整數向量,因此示例函數是一個非常簡單的單詞
is_sub_num <- function(a,b){sum(!(a==b))==1}
其中a,b是字符載體如
a = c(1,2,3); b=c(1,4,3)
is_sub_num(a,b)
# [1] TRUE
我的數據將被存儲在一個data.table
Classes ‘data.table’ and 'data.frame': 100 obs. of 2 variables:
$ ID: int 1 2 3 4 5 6 7 8 9 10 ...
$ V2:List of 100
..$ : int 4 4 3 4
..$ : int 1 2 3 1
每個條目的長度可以是不同的(在下面的示例中,條目是所有大小爲4的)
我有一個表與候選對標識與功能測試上方DT相應的條目,遵循
is_pair_ok <- function(pair){
is_sub_num(DT[ID==pair[1],V2][[1]],DT[ID==pair[2],V2][[1]])}
這裏是我想要噸簡化o不要:
set.seed=234
z = lapply(1:100, function(x) sample(1:4,size=4,replace=TRUE))
is_sub_num <- function(a,b){sum(!(a==b))==1}
is_pair_ok <- function(pair){
is_sub_num(DT[ID==pair[1],V2][[1]],DT[ID==pair[2],V2][[1]])}
pair_list <- as.data.table(cbind(sample(1:100,10000,replace=TRUE),sample(1:100,10000,replace=TRUE)))
DT <- as.data.table(1:100)
DT$V2 <- z
colnames(DT) <- c("ID","V2")
print(system.time(tmp <-apply(pair_list,1,is_pair_ok)))
這需要我的筆記本電腦周圍22秒雖然它只有10,000個條目和功能都非常非常基本的。
你對如何加快代碼的任何建議???
'應用'轉換器實際上'矩陣'。 –
這整個問題不可重現,也不包含所需的輸出。我懷疑任何人都可以用這麼有用的信息來幫助你,特別是在星期天。 –
[請閱讀如何給一個重複的例子,該信息(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610) – Jaap