一个数据帧有条件的置换对象列值的让我们做一个虚拟数据集中,使用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