我刚刚将csv文件导入为数据框。我做到了。
myframe <- data.frame(read.csv("afile.csv"))
但是当我使用&#39; typeof()&#39;功能在&#39; myframe&#39;上,我得到一个列表。
> typeof(myframe)
[1] "list"
&#39; myframe&#39;原来是一个嵌套列表。试图更改myframe中第9个列表的名称绝对没有任何意义。我甚至都没有收到错误。这是我的代码。
colnames(myframe[9]) <- "ColName"
我无法将此列表转换为数据框(无论我做什么)。我尝试的任何方法都没有错误但却什么也没做。我试过这个。
myframe <- as.data.frame(myframe)
和
myframe <- as.data.frame(matrix(unlist(myframe), nrow=length(unlist(myframe[1]))))
(如另一篇文章所示)
所以这基本上是一个4部分的问题,
答案 0 :(得分:1)
OP的帖子中有几个问题。
作为data.frame读取
read.csv
提供data.frame
输出。所以,没有必要用data.frame
包裹,即
myframe <- read.csv("afile.csv")
如果分隔符不同,请使用sep
参数,对于非数字变量,stringsAsFactors=TRUE
的默认选项(因为read.csv
)将返回{{1作为class
。在这种情况下,请使用factor
。
更改数据集中的列名称。这可以通过选择我们想要更改的列名来完成。在我们更改第9列名称时,通过索引选择它,然后将其分配(stringsAsFactors=FALSE
)到新名称。
<-
通过选中colnames(myframe)[9] <- "ColName"
,typeof(myframe)
将"list"
为data.frame
list
length
个list
元素等于。如果我们想检查它是否是data.frame
is.data.frame(myfile)
或
str(myframe)
仅当存在error
时才会返回错误消息。在这里,当您通过data.frame
电话打包data.frame
时,它不会给出错误。例如
df1 <- data.frame(v1 = 1:5)
str(df1)
#'data.frame': 5 obs. of 1 variable:
#$ v1: int 1 2 3 4 5
用data.frame
换行不会改变任何东西,除非它是多余的。当然,我们可以data.frame(data.frame(data.frame(df1)))
进行测试作为练习。
str(data.frame(df1))
#'data.frame': 5 obs. of 1 variable:
#$ v1: int 1 2 3 4 5
答案 1 :(得分:0)
文件的默认存储是一个数据帧。无需将其设为数据帧。
myframe <- read.csv(file.choose(),sep=",",header=T) #Select your file interactively.
class(myframe)
mode(myframe)
typeof(myframe)
names(myframe)[9] <- "ColName" ## Renaming column no. 9 of dataframe