Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.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中创建函数?_R_Function - Fatal编程技术网

如何在R中创建函数?

如何在R中创建函数?,r,function,R,Function,而不是逐个编写命令,例如: data_101$new_column <- "a101" data_102$new_column <- "a102" data_103$new_column <- "a103" data_104$new_column <- "a104" data_105$new_column <- "a105" ... data_150$new_column <- "a150" data\u 101$new\u列您可以使用ls获取对象,

而不是逐个编写命令,例如:

data_101$new_column <- "a101" 
data_102$new_column <- "a102" 
data_103$new_column <- "a103" 
data_104$new_column <- "a104" 
data_105$new_column <- "a105"
...
data_150$new_column <- "a150"

data\u 101$new\u列您可以使用
ls
获取对象,然后使用
mget
获取列表中的数据。我们可以使用
Map
在每个数据帧中添加一个新列

d_names <- ls(pattern = 'data_\\d+')
total_data <- Map(cbind, mget(d_names), 
                  new_column = paste0("a", gsub("\\D", "", d_names)))

使用可再现的示例:

data_101 <- data.frame(a = 1:5, b = 11:15)
data_102 <- data.frame(a = 6:10, b = 16:20)
d_names <- ls(pattern = 'data_\\d+')
Map(cbind, mget(d_names), new_column = paste0("a", gsub("\\D", "", d_names)))

#$data_101
#  a  b new_column
#1 1 11       a101
#2 2 12       a101
#3 3 13       a101
#4 4 14       a101
#5 5 15       a101

#$data_102
#   a  b new_column
#1  6 16       a102
#2  7 17       a102
#3  8 18       a102
#4  9 19       a102
#5 10 20       a102

data\u 101您可以使用
ls
获取对象,然后使用
mget
获取列表中的数据。我们可以使用
Map
在每个数据帧中添加一个新列

d_names <- ls(pattern = 'data_\\d+')
total_data <- Map(cbind, mget(d_names), 
                  new_column = paste0("a", gsub("\\D", "", d_names)))

使用可再现的示例:

data_101 <- data.frame(a = 1:5, b = 11:15)
data_102 <- data.frame(a = 6:10, b = 16:20)
d_names <- ls(pattern = 'data_\\d+')
Map(cbind, mget(d_names), new_column = paste0("a", gsub("\\D", "", d_names)))

#$data_101
#  a  b new_column
#1 1 11       a101
#2 2 12       a101
#3 3 13       a101
#4 4 14       a101
#5 5 15       a101

#$data_102
#   a  b new_column
#1  6 16       a102
#2  7 17       a102
#3  8 18       a102
#4  9 19       a102
#5 10 20       a102

data\u 101您可以将数据帧存储在列表中,这样您就可以像以下那样运行for循环:

data <- list()
for (i in c(105,106,...,150)){
    data[[i]]$new_column <- paste0("a",i)
}

data您可以将数据帧存储在列表中,这样您就可以像以下那样运行for循环:

data <- list()
for (i in c(105,106,...,150)){
    data[[i]]$new_column <- paste0("a",i)
}

data Hi@Ronak Shah,在我执行您建议的命令后,为什么它在mapply中显示错误(FUN=f,…,SIMPLIFY=FALSE):零长度输入不能与非零长度输入混合?有什么我错过的吗?非常多appreciated@Tzun这很奇怪,对于我创建的一个小示例来说似乎很好。数据帧的名称是否与示例中的名称相同?你能粘贴什么是
d_names
的输出吗?Hi@Ronak Shah,在我执行你建议的命令后,为什么它在mapply中显示错误(FUN=f,…,SIMPLIFY=FALSE):零长度输入不能与非零长度输入混合?有什么我错过的吗?非常多appreciated@Tzun这很奇怪,对于我创建的一个小示例来说似乎很好。数据帧的名称是否与示例中的名称相同?能否粘贴
d_name
的输出内容?