【发布时间】:2021-06-09 19:23:09
【问题描述】:
对于数据框中的每一列,我想用列号替换所有非零值。 即,如果我有一个像这样的数据框:
> df1 <- as.data.frame(matrix(c(0,0.1,0,0.1,0,0.1,0,0.1,0,0.1,0,0.1), nrow = 4, ncol = 3))
> df1
V1 V2 V3
1 0.0 0.0 0.0
2 0.1 0.1 0.1
3 0.0 0.0 0.0
4 0.1 0.1 0.1
我想改成:
>df2
V1 V2 V3
1 0 0 0
2 1 2 3
3 0 0 0
4 1 2 3
我在以下方面尝试了多种变体但没有成功 - 我无法理解 lapply 调用中的函数所指的内容。
counter <- 0
lapply(df1, function(x){
df1[,x][df1[,x]>0] <- counter
counter <<- counter+1
})
counter <- 0
lapply(df1, function(x){
x[][x[]>0] <- counter
counter <<- counter+1
})
【问题讨论】:
标签: r dataframe indexing lapply