这是一个非常琐碎的问题,我多次检查了括号,但没有发现任何错误。 我有两个列表,每个列表都有一个.txt文件的路径作为因素。这两个列表具有相同的名称,对于第一个列表中的每个元素,我想在第二个列表中找到对应的列表。
列表如下:
DEGs <- list(element1="path",
element2="path",
element3="path",
element3="path",
等...
我的代码就是这个:
for (i in list1) {
for (k in list2) {
if (names(i) == names(k)) {
print paste0(i, " = ", k)
}
}
}
我当然会使用文件而不是使用print来加载文件并进行一些操作,但是在此之前,我会收到此错误:
Error: unexpected symbol in:
" if (names(i) == names(k)) {
print paste0"
> }
Error: unexpected '}' in " }"
> }
Error: unexpected '}' in " }"
> }
Error: unexpected '}' in "}"
>
有人知道这个问题吗?可以肯定的是,它是微不足道的。 非常感谢
答案 0 :(得分:3)
在R
中,print
是一个函数
for (i in list1) {
for (k in list2) {
if (names(i) == names(k)) {
print(paste0(i, " = ", k))
}
}
除了上述问题外,提取的names(i)
中的list
无法正常工作,因为它正在提取并返回vector
,即进行list[[1]]
,list1[[2]]
等
list1 <- list(element1 = 'a', element2 = 'b')
list2 <- list(element1 = 'c', element2 = 'd')
for(i in list1) print(i)
#[1] "a"
#[1] "b"
相反,它可以遍历名称
for(nm1 in names(list1)) {
for(nm2 in names(list2)) {
if(nm1 == nm2){ print(paste0(list1[[nm1]], " = ", list2[[nm2]]))
}
}
}
此外,paste
是矢量化的,并且由于list
元素的矢量长度为1,
paste(list1, list2, sep=" = ")
应该工作或使用Map
unlist(Map(paste, list1, list2, MoreArgs = list(sep = " = ")))