【发布时间】:2018-02-08 12:39:14
【问题描述】:
我有一个看起来像这样的数据框
var1<-c(150,20,30)
var2<-c(20,30,40)
x<-c(2.5,4.5,7.5)
s_var1<-c(0,0,0)
s_var2<-c(0,0,0)
data<-data.frame(var1, var2, x, s_var1, s_var2)
可能有一大堆“var”列 - var1、var2....var'n'。与 s_var1、s_var2 ......等相同。
我想编写一个函数,它在引用“var”列和“x”列的同时对“s_var”列进行计算。
例如:如果有 2 个 'var' 列
n_var<-c(1,2)
for (i in n_var)
{
if (x > 2.5) { s_var[i] = var[i] } else {s_var[i] = 2*var[i]}
}
有什么建议吗?我正在努力将列表中的数字作为引用列名的后缀传递...
【问题讨论】:
-
欢迎来到 StackOverflow!请阅读有关how to ask a good question 的信息以及如何提供reproducible example。这将使其他人更容易帮助您。
-
为什么还要创建
s_var1和s_var2?像cbind(df, setNames(data.frame(sapply(df[grepl('var' ,names(df))], function(i) ifelse(df$x > 2.5, i, 2*i))), paste0('s_', names(df)[grepl('var', names(df))])))这样的东西应该可以正常工作。 -
在
paste()之后使用get()构造变量名