【发布时间】:2017-05-07 20:42:51
【问题描述】:
我想在 R 中一次重新编码多个变量。这些变量位于更大的数据框中。以下是一些示例数据:
z <- data.frame (A = c(1,2,300,444,555),
B = c(555,444,300,2,1),
C = c(1,2,300,444,555),
D = c(1,2,300,444,555))
我想做的是将所有等于 300 的值重新编码为 3、444 为 4、555 为 5。
我认为我可以在列表中执行此操作。这是我尝试过的:
example_list = list(c("A", "B", "C", "D"))
example_list <- apply(z[,example_list], 1, function(x) ifelse(any(x==555, na.rm=F), 0.5,
ifelse(any(x==444), 0.25),
ifelse(any(x==300), 3, example_list)))
我得到这个错误:
Error during wrapup: invalid subscript type 'list'
然后尝试使用“lapply”,我得到了这个错误:
Error during wrapup: '1' is not a function, character or symbol
即使这样,我也不确定这是否是执行此操作的最佳方法...我只是想避免对多个变量逐行执行此操作。任何建议都会很棒,因为我是 R 新手,并不完全理解我做错了什么。
我确实在 SO:Question 上找到了类似的问题,但我不确定如何将其应用于我的具体问题。
【问题讨论】:
标签: r