【发布时间】:2017-07-18 01:13:40
【问题描述】:
我正在清理 R 中的一些调查数据;根据对问题的回答分配变量 1,0。假设我有一个有 3 个选项的问题; a,b,c;我有一个包含响应和逻辑变量的数据框:
df <- data.frame(a = rep(0,3), b = rep(0,3), c = rep(0,3), response = I(list(c(1),c(1,2),c(2,3))))
因此,如果响应与列索引匹配(即 1=a、2=b、3=c),我想将 0 更改为 1。
使用循环很容易做到这一点:
for (i in 1:nrow(df2)) df2[i,df2[i,"response"][[1]]] <- 1
有什么方法可以用 apply/lapply/sapply/etc 做到这一点?比如:
df <- sapply(df,function(x) x[x["response"][[1]]] <- 1)
还是我应该坚持循环?
【问题讨论】:
-
你的预期输出是什么