标题可能会误导您,但我在这里遇到的情况是
half_paper <- lapply(data_set[,-1], function(x) x[x==0]<-0.5)
该行应该用0代替除第一列以外的所有列。
然后我要取出half_paper并将其放入此处,以便按顺序排列除第一列以外的所有列。
prestige_paper <-apply(half_paper[,-1],2,rank)
但是我遇到了一个错误,我认为我需要以某种方式将half_paper放入data_set这样的数据集中。
感谢您的所有帮助
答案 0 :(得分:1)
您的主要问题“本行应该用0
代替所有列中的0.5
,但第一个除外”可以通过在匿名函数中放置另一行来解决。 gets运算符<-
返回右侧的值,因此您的lapply
为每一列返回的值为0.5
。为了解决这个问题,可以在返回修改后的向量的函数中添加另一行。
还值得注意的是lapply
返回一个列表。在这种情况下,apply
被替换为lapply以保持一致性,但是plyr::ddply
可能更适合此特定需求。
half_mtcars <- apply(mtcars[, -1], 2, function(x) {x[x == 0] <- .5;return(x)})
prestige_mtcars_tail <- apply(half_mtcars, 2, rank)
prestige_mtcars <- cbind(mtcars[,1, drop = F], prestige_mtcars_tail)