Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-将列名作为变量传递给lappy_R_Lapply - Fatal编程技术网

R-将列名作为变量传递给lappy

R-将列名作为变量传递给lappy,r,lapply,R,Lapply,我将这个函数应用于R中的一个列表 tmp<-lapply(mydata,transform, V3 = ifelse(V2 > 20, V3, NA)) tmp 20,V3,NA)) 列表中的每个元素都是一个数据框,包含3个数字列V1、V2和V3。上面的代码工作得很好 但如果我尝试将列设置为变量: colA<-paste("V",2,sep="") colB<-paste("V",3,sep="") colA这与关于子集的讨论类似,因为变换是交互使用的。因为您在这里

我将这个函数应用于R中的一个列表

tmp<-lapply(mydata,transform, V3 = ifelse(V2 > 20, V3, NA))
tmp 20,V3,NA))
列表中的每个元素都是一个数据框,包含3个数字列V1、V2和V3。上面的代码工作得很好

但如果我尝试将列设置为变量:

colA<-paste("V",2,sep="")
colB<-paste("V",3,sep="")

colA这与关于
子集的讨论类似,因为
变换
是交互使用的。因为您在这里的使用更具程序性(您通过对象传递变量名),所以最好不要使用
transform
,而是开始使用
[
来访问(获取/设置)数据列:

lapply(mydata, function(x) {
   x[[colB]] <- ifelse(x[[colA]] > 20, x[[colB]], NA)
   return(x)
})
lappy(我的数据,函数(x){
x[[colB]]20,x[[colB]],NA)
返回(x)
})

lappy(我的数据,函数(x,c1,c2){
x[[c2]]20,x[[c2]],NA)
返回(x)
},c1=可乐,c2=可乐)

我真的需要把事情列成一个列表……这就是
帮助(“转换”)
所说的。对我来说,它说
下标超出范围
tmp<-lapply(mydata,transform, get(colB) = ifelse(get(colA) > 20, get(colB), NA))
Error: unexpected '=' in "tmp<-lapply(mydata,transform, get(colB) ="
lapply(mydata, function(x) {
   x[[colB]] <- ifelse(x[[colA]] > 20, x[[colB]], NA)
   return(x)
})
lapply(mydata, function(x, c1, c2) {
   x[[c2]] <- ifelse(x[[c1]] > 20, x[[c2]], NA)
   return(x)
}, c1 = colA, c2 = colB)