我首先通过一个Excel文件将数据读入R,该文件包含文件位置和文件名列表:
data_files <- readxl::read_excel("./Data/source_data.xlsx")
接下来,我想使用for循环/ seq_along遍历此列表,以访问每个行变量,并使用read.csv()中的行变量,然后执行以下操作:
for(i in seq_along(data_files)){
x <- read.csv(data_files[[i]], sep= "\t", skipNul = TRUE)
# DO THINGS
}
运行for循环时,我得到:
Error in file(file, "rt") : invalid 'description' argument
我知道这与未按我期望的方式发生迭代有关,因为在执行以下操作时,csv已成功读入R:
path <- "/Users/gerb/Downloads/"
file <- "Who_Has_Seen_crosstab (2).csv"
path_file <- paste(path, file, sep="")
x <- read.csv(path_file, sep= "\t", skipNul = TRUE)
答案 0 :(得分:1)
@Rui Barradas得到我的投票,但值得扩大他的答案。来自?seq_along
:“ seq_along和seq_len返回一个整数向量。”如前所述,您可以通过在函数中添加print来看到这一点。
l = tibble(a = c("a","b","C"))
x = tibble(a = c("a","b","C"),
b = c("x","y","z"))
for(i in seq_along(l)){
print(l[i])
}
# A tibble: 3 x 1
a
<chr>
1 a
2 b
3 C
for(i in seq_along(x)){
print(x[i])
}
> for(i in seq_along(x)){
print(x[i])
}
#A tibble: 3 x 1
a
<chr>
1 a
2 b
3 C
# A tibble: 3 x 1
b
<chr>
1 x
2 y
3 z
您不想要整个向量。看来您想遍历小标题中的每一行。还有其他方法可以做到这一点,但是类似这样的方法会更好:
for(i in 1:nrow(l)){
print(l[i,])
}
# A tibble: 1 x 1
a
<chr>
1 a
# A tibble: 1 x 1
a
<chr>
1 b
.....
最后一点:读取R输出的副本和粘贴比图像更容易。避免抓住屏幕来回答将来的问题对其他人会有所帮助。