r - 如何在R中读取HDFS中的文件而不丢失列名和行名

标签 r csv hadoop hdfs

我的问题是,当我读取包含列名(例如(标题))的csv文件时,列名消失了,而是显示了“V1”,“V2” ...

我有csv格式的mtcars数据集,这是预览

model,mpg,cyl,disp,hp,drat,wt,qsec,vs,am,gear,carb
Mazda RX4,21,6,160,110,3.9,2.62,16.46,0,1,4,4
Mazda RX4 Wag,21,6,160,110,3.9,2.875,17.02,0,1,4,4
Datsun 710,22.8,4,108,93,3.85,2.32,18.61,1,1,4,1

我想上传到HDFS并阅读它,因此我在“HUE”平台上上传了文件。我可以在文件管理器中查看它。这是一个小预览:

enter image description here

然后在R session 中使用plyrmr运行以下代码:
filename3 <- "/user/sgerony/mtcars.csv"
input(filename3,format=make.input.format(format = "csv", sep=","))

结果是这样的:
                V1   V2  V3    V4  V5   V6    V7    V8 V9 V10  V11  V12
1    Chrysler Imperial 14.7   8   440 230 3.23 5.345 17.42  0   0    3    4
2             Fiat 128 32.4   4  78.7  66 4.08   2.2 19.47  1   1    4    1
3          Honda Civic 30.4   4  75.7  52 4.93 1.615 18.52  1   1    4    2
4       Toyota Corolla 33.9   4  71.1  65 4.22 1.835  19.9  1   1    4    1

如您所见,列名已消失。我究竟做错了什么?

谢谢

最佳答案

这是我找到的解决方案(我真的不喜欢它,因此,如果您有更好的解决方案,请共享)。

我将csv文件分为两个csv文件,一个仅包含列名(mtcars_names.csv),另一个包含数据(mtcars_no_names.csv)。然后将它们上传到文件管理器。

filename <- "/user/sgerony/mtcars_no_names.csv"
filename.names <- "/user/sgerony/mtcars_names.csv"
filename.names <- as.data.frame(input(filename.names,
format=make.input.format(format = "csv", sep=",")))

# transform the columns in "character" types
for(i in 1:dim(filename.names)[2]){
  filename.names[,i] <- as.character(filename.names[,i])
}

现在,每次我写/读文件时,我都会编写代码:
### comlumn name information is once more lost
output(input(filename,format=make.input.format(format = "csv",
sep=",", col.names = filename.names[1,])),
path="/user/sgerony/mtcars_output_csv")

input("/user/sgerony/mtcars_output_csv",
format=make.input.format(format = "csv", 
sep=",", col.names = filename.names[1,]))

如果生成数据子集,可能会变得非常混乱。对于具有不同列名的每个子集,必须生成一个包含列名的新文件

关于r - 如何在R中读取HDFS中的文件而不丢失列名和行名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33802116/

相关文章:

hadoop - 我如何在整个文件处理结束时发出键值?

r - 通过 dplyr 中的动态列名进行汇总

php - 使用 PHP 将单列从 CSV 转换为简单数组

linux - perl + 将 json 转换为 csv 文件

javascript - Dygraphs.js 未显示第二个值

java - 从 Java 程序运行 Hadoop 作业

python - Cloudera CDH 5群集的mrjob NoFIleFound异常

r - 我可以在绕过加载 namespace 的同时加载 RData 文件吗?

R 相当于 Stata 在 stub 名称的本地宏列表上的 for 循环

R:dplyr。改变对行中值为 0 的列进行计数的列