在R中使用for循环从两个数据帧绑定列时出现问题

在R中使用for循环从两个数据帧绑定列时出现问题,r,for-loop,naming,cbind,R,For Loop,Naming,Cbind,我有7个不同的asc文件加载到R中,asc[I]和wasc[I],[I]表示有1:7asc和wasc加载到R中。我需要将wasc[I]与asc[I][[1](仅是asc[I]中的第一列)和整个wasc[i]文件) 每对asc和wasc文件都应重复此操作 代码一直给我空白的数据帧,所以我不知道为什么这不起作用。命名是正确的,但是代码没有识别出asc[i]和wasc[i]与以前加载的文件相关 任何帮助都将不胜感激 # These data frames will reproduce my issue

我有7个不同的
asc
文件加载到R中,
asc[I]
wasc[I]
[I]
表示有1:7
asc
wasc
加载到R中。我需要将
wasc[I]
asc[I][[1]
(仅是
asc[I]中的第一列)
和整个
wasc[i]
文件)

每对
asc
wasc
文件都应重复此操作

代码一直给我空白的数据帧,所以我不知道为什么这不起作用。命名是正确的,但是代码没有识别出
asc[i]
wasc[i]
与以前加载的文件相关

任何帮助都将不胜感激

# These data frames will reproduce my issue 

asc1 <- data.frame(x= c(rep("A.tif", 20)), y = 1:20)
wasc1 <- data.frame(x= c(rep("B.tif", 20)), y = c(rep("Imager",20)))

asc2 <- data.frame(x= c(rep("A.tif", 20)), y = 1:20)
wasc2 <- data.frame(x= c(rep("B.tif", 20)), y = c(rep("Imager",20)))

asc3 <- data.frame(x= c(rep("A.tif", 20)), y = 1:20)
wasc3 <- data.frame(x= c(rep("B.tif", 20)), y = c(rep("Imager",20)))


for (i in 1:3) {
      d <- paste("asc", i, sep ="")
      f <- paste("wasc", i, sep ="")
      full_wing <- as.character(paste("full_wing", i, sep = ""))
      assign(full_wing,cbind(d[[1]], f))
    }

# Output of full_wing1 data frame

dput(full_wing1)

structure(c("asc1", "wasc1"), .Dim = 1:2, .Dimnames = list(NULL, 
c("", "f")))
#这些数据帧将重现我的问题
asc1
Map
是在多个参数上并行迭代的一个很好的快捷方式。它返回一个漂亮的
列表
。您可以使用访问单个元素,例如,
full_-wing[[1]]
full_-wing[[3]]
,等等。
Map
只是一个快捷方式,上面的代码基本上等同于下面的
for
循环:

results = list()
for (i in seq_along(asc)) {
    results[[i]] = cbind(wasc[[i]], asc[[i]][[1]])
}
我使用
mget
将数据放入一个列表中,因为在您的示例中,您已经有了
asc1
asc2
等对象。更好的方法是一开始决不创建这些变量,而是直接将文件读取到列表中,如下所示:

asc_paths = list.files(pattern = "^asc")
asc = lapply(asc_paths, read.table)
你可以在网站上看到更多的解释


如果您只需要一列
asc
文件,另一种简化方法是只读取所需的列,请参阅此处的一些建议。

Hi Connor,如果您可以准备一个可复制的示例,这样我们就可以将您的代码直接剪切并粘贴到我们自己的R会话中,运行它,看看发生了什么。有时,这需要您使用
dput
准备数据(或使用相同格式的代表性数据子集)。谢谢:)@神秘,我只是给我的问题添加了更多的背景知识。代码正在生成一个空(2列,1行)向量,该向量命名正确,但实际数据中有NA。欢迎使用堆栈溢出!您能否通过共享您的数据样本使您的问题重现,以便其他人能够提供帮助(请不要使用
str()
head()
或屏幕截图)?您可以使用和包来帮助您实现这一点。另请参阅&我想附上两份asc样本,但我不知道如何将其纳入问题@Tung中。你有我可以使用的特定功能吗?好的,很抱歉让大家感到困惑。我添加了一些数据帧,这些数据帧将重现我遇到的问题@格雷戈
asc_paths = list.files(pattern = "^asc")
asc = lapply(asc_paths, read.table)