Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将print语句的输出保存在R中的data.frame中_R - Fatal编程技术网

将print语句的输出保存在R中的data.frame中

将print语句的输出保存在R中的data.frame中,r,R,是否可以将“print”语句的输出保存为R中的data.frame?示例代码为: for (i in 1:3){ print(paste(i,i+1,i+2)) } 然后我想将红色圆圈中的数字存储到一个干净的3x3 data.frame中。谢谢 不需要打印 x <- 1:3 y <- x + 1 z <- y + 1 data <- data.frame(x,y,z) data 将print()的结果保存到向量 一系列print()函数的结果可以保存到向量中,如

是否可以将“print”语句的输出保存为R中的data.frame?示例代码为:

for (i in 1:3){
  print(paste(i,i+1,i+2))
}
然后我想将红色圆圈中的数字存储到一个干净的3x3 data.frame中。谢谢


不需要打印

x <- 1:3
y <- x + 1
z <- y + 1

data <- data.frame(x,y,z)
data
print()
的结果保存到向量 一系列
print()
函数的结果可以保存到向量中,如下所示

x <- 1:3
printouts <- unlist(lapply(x,function(i) print(paste(i,i+1,i+2))))
printouts
将向量转换为数据帧 我们可以使用
read.csv()
读取向量并将其转换为数据帧。首先,我们将稍微编辑打印,使其使用逗号而不是空格分隔数据。然后我们将生成打印输出并读取到数据帧中

x <- 1:3
# use comma so we can parse with read.csv
printouts <- unlist(lapply(x,function(i) print(paste(i,i+1,i+2,sep=","))))
diagnostics <- read.csv(text = printouts,header = FALSE)
diagnostics
请注意,可以使用
read.csv()
中的
col.names=
参数设置更有用的列名

使用多个输入文件的可复制示例 根据对我答案的评论,这里有一个从数据库读取数据的可复制示例,我们将神奇宝贝按代(1-7)划分为文件

我们将读取数据,并将攻击数据大于120的任何神奇宝贝写入日志文件。首先,我们有代码从我的GitHub站点下载zip文件(如果尚未下载)

if(!dir.exists("./pokemonData")){
     # download and unzip 
     download.file("https://raw.githubusercontent.com/lgreski/pokemonData/master/pokemonData.zip",
                   "pokemonData.zip",
                   mode="wb")
     unzip("pokemonData.zip")
}
接下来,我们将设置一个日志文件,包括覆盖所有以前的副本,以便在写入日志文件时使用
cat()
append=TRUE

logFile <- "./pokemonData/highAttackStat.log"
# erase file in case it already exists, because we'll cat() with append mode
if (file.exists(logFile)) file.remove(logFile)
…以及输出:

> printouts
[1] "1 2 3" "2 3 4" "3 4 5"
> 
> head(theSubset)
                     File Number                      Name Attack
1 ./pokemonData/gen01.csv      6 CharizardMega Charizard X    130
2 ./pokemonData/gen01.csv     15     BeedrillMega Beedrill    150
3 ./pokemonData/gen01.csv     68                   Machamp    130
4 ./pokemonData/gen01.csv     99                   Kingler    130
5 ./pokemonData/gen01.csv    112                    Rhydon    130
6 ./pokemonData/gen01.csv    115 KangaskhanMega Kangaskhan    125
> 

不需要打印

x <- 1:3
y <- x + 1
z <- y + 1

data <- data.frame(x,y,z)
data
print()
的结果保存到向量 一系列
print()
函数的结果可以保存到向量中,如下所示

x <- 1:3
printouts <- unlist(lapply(x,function(i) print(paste(i,i+1,i+2))))
printouts
将向量转换为数据帧 我们可以使用
read.csv()
读取向量并将其转换为数据帧。首先,我们将稍微编辑打印,使其使用逗号而不是空格分隔数据。然后我们将生成打印输出并读取到数据帧中

x <- 1:3
# use comma so we can parse with read.csv
printouts <- unlist(lapply(x,function(i) print(paste(i,i+1,i+2,sep=","))))
diagnostics <- read.csv(text = printouts,header = FALSE)
diagnostics
请注意,可以使用
read.csv()
中的
col.names=
参数设置更有用的列名

使用多个输入文件的可复制示例 根据对我答案的评论,这里有一个从数据库读取数据的可复制示例,我们将神奇宝贝按代(1-7)划分为文件

我们将读取数据,并将攻击数据大于120的任何神奇宝贝写入日志文件。首先,我们有代码从我的GitHub站点下载zip文件(如果尚未下载)

if(!dir.exists("./pokemonData")){
     # download and unzip 
     download.file("https://raw.githubusercontent.com/lgreski/pokemonData/master/pokemonData.zip",
                   "pokemonData.zip",
                   mode="wb")
     unzip("pokemonData.zip")
}
接下来,我们将设置一个日志文件,包括覆盖所有以前的副本,以便在写入日志文件时使用
cat()
append=TRUE

logFile <- "./pokemonData/highAttackStat.log"
# erase file in case it already exists, because we'll cat() with append mode
if (file.exists(logFile)) file.remove(logFile)
…以及输出:

> printouts
[1] "1 2 3" "2 3 4" "3 4 5"
> 
> head(theSubset)
                     File Number                      Name Attack
1 ./pokemonData/gen01.csv      6 CharizardMega Charizard X    130
2 ./pokemonData/gen01.csv     15     BeedrillMega Beedrill    150
3 ./pokemonData/gen01.csv     68                   Machamp    130
4 ./pokemonData/gen01.csv     99                   Kingler    130
5 ./pokemonData/gen01.csv    112                    Rhydon    130
6 ./pokemonData/gen01.csv    115 KangaskhanMega Kangaskhan    125
> 

我上面的问题是我在实际工作中遇到的问题的一个简化例子。我需要对大量数据集进行循环,其中一些数据集存在问题。我需要确定哪些有问题,然后用“打印(文件号、列号、问题)”之类的东西打印出来。并存储结果。谢谢。在这种情况下,有很多方法可以在循环或
apply()
函数中将内容写入文件。我将发布一些示例代码。@Jeremy-请参阅我的更新答案,其中说明了如何将打印结果写入向量,然后使用
read.csv()
@Jeremy()将向量转换为数据帧-更新版本包括通过
cat()写入日志文件的代码
。我上面的问题是我在实际工作中遇到问题的一个简单例子。我需要对大量数据集进行循环,其中一些数据集存在问题。我需要确定哪些有问题,然后用“打印(文件号、列号、问题)”之类的东西打印出来。并存储结果。谢谢。在这种情况下,有很多方法可以在循环或
apply()
函数中将内容写入文件。我将发布一些示例代码。@Jeremy-请参阅我的更新答案,其中说明了如何将打印结果写入向量,然后使用
read.csv()
@Jeremy()将向量转换为数据帧-更新版本包括通过
cat()
写入日志文件的代码。