Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.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
在rstudio中分配函数后如何从环境中调用data.frames_R_Environment Variables_Rstudio_Assign - Fatal编程技术网

在rstudio中分配函数后如何从环境中调用data.frames

在rstudio中分配函数后如何从环境中调用data.frames,r,environment-variables,rstudio,assign,R,Environment Variables,Rstudio,Assign,我目前有19个excel文件,其中11个有7列,另外8个有9列。这两个文件基本上都有一些精确的数据,但最后9个文件只是有一些我不需要的额外数据。我的最终目标是提取出需要操作的4列,并将它们作为一个data.frame,以便稍后执行交叉制表 我已成功地使用以下代码导入单个文件,以处理格式问题: import <- read.csv(file = "myfile.csv", head = TRUE, sep = "|", stringAsFactors = FALSE) 我现在的问题是,我希

我目前有19个excel文件,其中11个有7列,另外8个有9列。这两个文件基本上都有一些精确的数据,但最后9个文件只是有一些我不需要的额外数据。我的最终目标是提取出需要操作的4列,并将它们作为一个data.frame,以便稍后执行交叉制表

我已成功地使用以下代码导入单个文件,以处理格式问题:

import <- read.csv(file = "myfile.csv", head = TRUE, sep = "|", stringAsFactors = FALSE)
我现在的问题是,我希望导入的文件正在全局环境中显示。它们显示为data.frame类型,具有精确的长度、大小和各自内容的值。但我不能给他们打电话。在对该问题的评论中,有人问了这一点,但我没有看到任何答复来纠正这一点。虽然显示了文件名(原始excel文档名),但这些名称包含空格,如果我尝试根据文件名调用它们,R不喜欢也不会这样做

作为一种替代导入方法,我还尝试了以下方法,我相信这些方法已经开始奏效:

# Get the files names
files = list.files(pattern="*.csv")
# First apply read.csv, then rbind
myfiles = do.call(rbind, lapply(files, function(x) read.csv(x, head = TRUE, 
                   sep = "|", stringsAsFactors = FALSE)))
但是因为前11个文件有7列,其余的有9列,所以我收到了错误消息

Error in rbind(deparse.level, ...) :
  numbers of columns of arguments do not match
也许将文件分离到不同的目录中会有帮助,但鉴于我为其他人提供了这一功能,因此使用代码为他们提供这一功能会更专业


因此,归根结底:我需要知道如何访问这些数据,或者如果有其他方法可以访问这些数据,我将不胜感激

如果将
data.table::rbindlist
fill=TRUE
dplyr::bind_rows
一起使用,而不是
do.call(rbind,…)
您的列表方法将很好地工作。例如,
myfiles=data.table::rbindlist(lappy(文件,函数(x)read.csv(x,head=TRUE,sep=“|”,stringsAsFactors=FALSE)),fill=TRUE)
但是如果要使用
data.table
,也可以使用
fread
rbindlist(lappy(文件,fread,sep=“|”),fill=TRUE)
。它将自动检测标题,默认为
stringsAsFactors=FALSE
,而且速度更快。我刚刚尝试了
fread
示例,我喜欢它在读取所有文件时显示的进度。但是,一旦它命中9列文件,我就会收到一条错误消息:
Error in FUN(X[[I]],…):预期sep(“|”)但当从点0检测类型时,新行E0F(或其他非打印字符)结束字段3:{此处给出示例数据}
听起来您的一些文件不规则或不是矩形。我也会尝试设置
fread
fill=TRUE
。。。有关详细信息,请参见fread<代码>rbindlist(lappy(files,fread,sep=“|”,fill=TRUE)),fill=TRUE)
Error in rbind(deparse.level, ...) :
  numbers of columns of arguments do not match