使用write.table将列表写入R中的.dat 我试图将这个循环生成的数字列表写入一个文件。 我使用下面的代码已经能够做到这一点,但输出并不是我想要的。 我知道我需要使用write.table,并且需要将其保存为.dat 谁能告诉我为什么每行之间都印着“x”? **我在文件中得到了什么:* x 1800 x 1804 x 1808 x 等等

使用write.table将列表写入R中的.dat 我试图将这个循环生成的数字列表写入一个文件。 我使用下面的代码已经能够做到这一点,但输出并不是我想要的。 我知道我需要使用write.table,并且需要将其保存为.dat 谁能告诉我为什么每行之间都印着“x”? **我在文件中得到了什么:* x 1800 x 1804 x 1808 x 等等,r,list,file,for-loop,write.table,R,List,File,For Loop,Write.table,我想要什么: 1804 1808 1812 等等 years <- seq(1800,2020) for (i in years){ i_div_400 <- i%%400 if (i_div_400 == 0 & (i%%4 == 0 && i%%100 != 0)){ write.table(i, "file.dat", append=TRUE, sep=",", quote=FALSE)

我想要什么:
1804
1808
1812
等等

years <- seq(1800,2020)

for (i in years){
  i_div_400 <- i%%400
  if (i_div_400 == 0 & (i%%4 == 0 && i%%100 != 0)){
    write.table(i, "file.dat", append=TRUE, sep=",", quote=FALSE)  
  }
}
years在输出中得到“x”的原因是,使用
write.table
时,这是默认的列名。如果您不想在输出中包含列名,请使用
col.names=FALSE
,它将只在输出中打印数字

years <- seq(1800,2020)

for (i in years){
  i_div_400 <- i%%400
  if (i_div_400 == 0 || (i%%4 == 0 && i%%100 != 0)){
    write.table(i, "file.dat", append=TRUE, sep=",", 
               row.names=FALSE, quote=FALSE, col.names = FALSE)  
  }
}

你确定这就是你得到的结果吗
i_div_400==0
每400年才正确一次。它不应该写任何东西。但是
write.table
希望使用列名等编写data.frame。如果您只想写一个文字值,请考虑<代码>文字>()/<代码>。另外,在实际编写之前生成要编写的值列表会更有效。对不起,你是对的,我以前发布了错误的单元格。我用正确的代码编辑了这篇文章。你为什么要做
leap这个矩阵应该被注释掉。if不能作为一条线工作
write.table(years[years %% 400 == 0 | (years %% 4 == 0 & years %%100 != 0)], 
          "file.dat", sep=",", row.names=FALSE, quote=FALSE, col.names = FALSE)