一個數據幀有條件的置換對象列值的讓我們做一個虛擬數據集中,使用R
ll = data.frame(rbind(c(2,3,5), c(3,4,6), c(9,4,9)))
colnames(ll)<-c("b", "c", "a")
> ll
b c a
1 2 3 5
2 3 4 6
3 9 4 9
P = data.frame(cbind(c(3,5), c(4,6), c(8,7)))
colnames(P)<-c("a", "b", "c")
> P
a b c
1 3 4 8
2 5 6 7
我想創建一個新的數據幀,其中L1中的每一列中的值會變成0時,它小於p的第一行中的a,b,& c的對應值;換句話說,我希望看到
> new_ll
b c a
1 0 0 5
2 0 0 6
3 9 0 9
所以我嘗試了這種方式
nn=c("a", "b", "c")
new_ll = sapply(nn, function(i)
ll[,paste0(i)][ll[,paste0(i)] < P[,paste0(i)][1]] <- 0)
但它並不適用於某些原因!我必須在我的劇本中犯一個愚蠢的錯誤!任何想法?
> new_ll
a b c
0 0 0
感謝,但什麼是錯我的代碼...我的意思是,爲什麼sapply不起作用? – ToNoY 2014-10-03 16:07:39
你的代碼不起作用,因爲該函數沒有返回任何有用的東西。 – 2014-10-03 16:11:08
這裏我不認爲「應用」是必需的。你不能只是[ll
A5C1D2H2I1M1N2O1R2T1
2014-10-03 16:34:06