如何循环遍历 R 中的 mapply?
How to loop through mapply in R?
我正在尝试使用 R 中的 mapply
函数连接字符串。但是,我希望其中一个字符串在 mapply
函数中可变。我的代码片段如下:
strings<-data.frame(x=c("dsf","sdf","sdf"))
strings2<-data.frame(extension=c(".csv",".json",".xml"))
for (i in 1:3)
{
strings_concat<-mapply(function(string1,string2) paste0(string1,string2),strings$x,strings2$extension[i])%>%
data.frame()%>%
unlist()%>%
data.frame()
#dosomething with strings_concat
}
但这只是给我最后一次迭代
strings_concat
dsf.xml
sdf.xml
sdf.xml
bust 相反,所需的输出如下:
strings_concat
dsf.csv
sdf.csv
sdf.csv
dsf.json
sdf.json
sdf.json
dsf.xml
sdf.xml
sdf.xml
在每次迭代中,我想将 strings_concat
与另一个数据框组合并保存。如果在 R 中有一种简单的方法可以做到这一点,谁能帮助我?
也许,outer
是更好的选择:
strings_concat <- c(outer(strings$x, strings2$extension, paste0))
strings_concat
#[1] "dsf.csv" "sdf.csv" "sdf.csv" "dsf.json" "sdf.json" "sdf.json"
# "dsf.xml" "sdf.xml" "sdf.xml"
您可以将其添加到 data.frame :
df <- data.frame(strings_concat)
如果您想在每次迭代中添加一些额外的步骤,您可以使用 lapply
:
lapply(strings2$extension, function(x) {
strings_concat <- paste0(strings$x, x)
#do something with strings_concat
})
您需要做的就是确保不断扩充数据集。所以我认为这应该可以解决问题:
strings<-data.frame(x=c("dsf","sdf","sdf"))
strings2<-data.frame(extension=c(".csv",".json",".xml"))
# We are going to keep adding things to results
results = NULL
for (i in 1:3)
{
strings_concat<-mapply(function(string1,string2) paste0(string1,string2),strings$x,strings2$extension[i])%>%
data.frame()%>%
unlist()%>%
data.frame()
# Here is where we keep adding things to results
results = rbind(results, strings_concat)
}
print(results)
注意:不在装有 R 的计算机前,因此此代码未经测试
我正在尝试使用 R 中的 mapply
函数连接字符串。但是,我希望其中一个字符串在 mapply
函数中可变。我的代码片段如下:
strings<-data.frame(x=c("dsf","sdf","sdf"))
strings2<-data.frame(extension=c(".csv",".json",".xml"))
for (i in 1:3)
{
strings_concat<-mapply(function(string1,string2) paste0(string1,string2),strings$x,strings2$extension[i])%>%
data.frame()%>%
unlist()%>%
data.frame()
#dosomething with strings_concat
}
但这只是给我最后一次迭代
strings_concat
dsf.xml
sdf.xml
sdf.xml
bust 相反,所需的输出如下:
strings_concat
dsf.csv
sdf.csv
sdf.csv
dsf.json
sdf.json
sdf.json
dsf.xml
sdf.xml
sdf.xml
在每次迭代中,我想将 strings_concat
与另一个数据框组合并保存。如果在 R 中有一种简单的方法可以做到这一点,谁能帮助我?
也许,outer
是更好的选择:
strings_concat <- c(outer(strings$x, strings2$extension, paste0))
strings_concat
#[1] "dsf.csv" "sdf.csv" "sdf.csv" "dsf.json" "sdf.json" "sdf.json"
# "dsf.xml" "sdf.xml" "sdf.xml"
您可以将其添加到 data.frame :
df <- data.frame(strings_concat)
如果您想在每次迭代中添加一些额外的步骤,您可以使用 lapply
:
lapply(strings2$extension, function(x) {
strings_concat <- paste0(strings$x, x)
#do something with strings_concat
})
您需要做的就是确保不断扩充数据集。所以我认为这应该可以解决问题:
strings<-data.frame(x=c("dsf","sdf","sdf"))
strings2<-data.frame(extension=c(".csv",".json",".xml"))
# We are going to keep adding things to results
results = NULL
for (i in 1:3)
{
strings_concat<-mapply(function(string1,string2) paste0(string1,string2),strings$x,strings2$extension[i])%>%
data.frame()%>%
unlist()%>%
data.frame()
# Here is where we keep adding things to results
results = rbind(results, strings_concat)
}
print(results)
注意:不在装有 R 的计算机前,因此此代码未经测试