Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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 将变量名传递到sapply_R_Variables_Matrix_Sapply - Fatal编程技术网

R 将变量名传递到sapply

R 将变量名传递到sapply,r,variables,matrix,sapply,R,Variables,Matrix,Sapply,以下是一个玩具数据集: df1 <-data.frame(c("267119002","257051033",NA,"267098003","267099020","267047006")) names(df1)[1]<-"ID" df2 <-data.frame(c("257051033","267098003","267119002","267047006","267099020")) names(df2)[1]<-"ID" df2$vals <-c(11,2

以下是一个玩具数据集:

df1 <-data.frame(c("267119002","257051033",NA,"267098003","267099020","267047006"))
names(df1)[1]<-"ID"

df2 <-data.frame(c("257051033","267098003","267119002","267047006","267099020"))
names(df2)[1]<-"ID"
df2$vals <-c(11,22,33,44,55)
但是,当我这样做时,它不会遍历
df1$ID
的所有值。这样,它只对第一个值执行
sapply
。示例输出:

> sapply(df1[col],function(x) fetcher(x))
ID 
33 
> sapply(df1$ID,function(x) fetcher(x))
[1] 33 11 22 55 44

那么为什么会发生这种情况呢?我需要使用变量名而不是确切的列名,因为我需要将其应用于不同的列,这些列在程序每次运行时都会有所不同。但是我需要它应用于每一行,而不仅仅是第一行。

区别在于
df1[col]
返回一列数据帧,而
df1$ID
返回一个向量/因子。使用您的代码,您需要一个向量/因子,因此您可以

使用
df1[,col]

sapply(df1[, col],function(x) fetcher(x))
或双括号
df1[[col]]

sapply(df1[[col]],function(x) fetcher(x))

.

不同之处在于
df1[col]
返回一列数据帧,
df1$ID
返回向量/因子。使用您的代码,您需要一个向量/因子,因此您可以

使用
df1[,col]

sapply(df1[, col],function(x) fetcher(x))
或双括号
df1[[col]]

sapply(df1[[col]],function(x) fetcher(x))

.

不同之处在于
df1[col]
返回一列数据帧,
df1$ID
返回向量/因子。使用您的代码,您需要一个向量/因子,因此您可以

使用
df1[,col]

sapply(df1[, col],function(x) fetcher(x))
或双括号
df1[[col]]

sapply(df1[[col]],function(x) fetcher(x))

.

不同之处在于
df1[col]
返回一列数据帧,
df1$ID
返回向量/因子。使用您的代码,您需要一个向量/因子,因此您可以

使用
df1[,col]

sapply(df1[, col],function(x) fetcher(x))
或双括号
df1[[col]]

sapply(df1[[col]],function(x) fetcher(x))

.

非常感谢您,非常感谢您!我也学到了一些东西!非常感谢马克!非常感谢你,真是太棒了!我也学到了一些东西!非常感谢马克!非常感谢你,真是太棒了!我也学到了一些东西!非常感谢马克!非常感谢你,真是太棒了!我也学到了一些东西!非常感谢马克!