【发布时间】:2018-12-15 03:04:54
【问题描述】:
我无法将一些代码放入函数/在 R 中运行循环
我想根据 'var99' 列中的值替换数据框中的变量 (var1,2,3,4)。
我可以通过以下方式做到这一点:
var1 = c(1, 2, 1, 2)
var2 = c(3, 2, 1, 2)
var3 = c(0.4, 2, 1, 2)
var4 = c(1, 2, 1, 2)
n1 = c(10, 14, 12, 10)
n2 = c(5, 3, 12, 10)
var99 = c('se', 'se', 'sd', 'sd')
mydata=data.frame(var1, var2, var3, var4, n1, n2, var99)
mydata<- mutate(mydata, var1 = ifelse(var99=="se",(var1*n1^0.5), var1))
mydata<- mutate(mydata, var2 = ifelse(var99=="se",(var2*n2^0.5), var2))
mydata<- mutate(mydata, var3 = ifelse(var99=="se", (var3*n2^0.5), var3))
mydata<- mutate(mydata, var4 = ifelse(var99=="se", (var4*n2^0.5), var4))
但这会因为更多的变量而变得笨拙,我更愿意拥有例如
varnames = c(var1, var2, var3, var4)
然后我会循环播放。任何人都可以建议如何构建一个函数/使用 lapply,因为我的尝试没有成功
【问题讨论】:
-
请分享一个可重现的例子
-
也许检查
mutate_at以将您的函数应用于多个列。在没有任何数据的情况下提供更多帮助并不容易。 -
我在上面添加了一个可重现的例子
-
您不需要遍历变量,但您还必须检查您需要使用
n1或n2的变量,对吗?只要确保这不是打字错误。 -
是的,抱歉,这不清楚;有时是n1,有时是n2。但我想如果我有一个可行的解决方案,我会很乐意用 n1 运行它两次,另一次用 n2 运行它。