0
這裏是一個玩具數據集:傳遞變量名稱爲sapply
df1 <-data.frame(c("267119002","257051033",NA,"267098003","267099020","267047006"))
names(df1)[1]<-"ID"
df2 <-data.frame(c("257051033","267098003","267119002","267047006","267099020"))
names(df2)[1]<-"ID"
df2$vals <-c(11,22,33,44,55)
,玩具代碼:
fetcher <-function(x){
y <- df2$vals[which(match(df2$ID,x)==TRUE)]
return(y)
}
sapply(df1$ID,function(x) fetcher(x))
在sapply
聲明,而是採用df1$ID
,我需要使用一個變量名。如:
col <-"ID"
sapply(df1[col],function(x) fetcher(x))
然而,當我這樣做,這樣就不會通過的df1$ID
所有值進行迭代。這種方式只對第一個值做sapply
。示例輸出:
> sapply(df1[col],function(x) fetcher(x))
ID
33
> sapply(df1$ID,function(x) fetcher(x))
[1] 33 11 22 55 44
那麼爲什麼會發生這種情況呢?我需要使用變量名稱而不是確切的列名稱,因爲我需要將其應用於每次程序運行時不同的列。但我需要它適用於每行而不僅僅是第一行。
非常感謝,完美的作品!我學到了一些可以啓動的東西!非常感謝Mark! – user2498193