请帮助我,因为我是R的新手,也是编程
我正在尝试编写一个循环,以便它应该读取每1000行的数据并在r中创建数据集
以下是我的试用
xml
其中<data>
<variable
name="listItems"
type="xxx.xx.models.FieldStudyList" />
</data>
<android.support.v7.widget.CardView
android:id="@+id/card_lstItemStart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardCornerRadius="7dp"
card_view:cardElevation="7dp"
card_view:cardMaxElevation="7dp"
card_view:contentPadding="0dp">
<TextView
android:id="@+id/txtTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{listItems.result.iterator() ???}"<=== I can't show title here ?
android:textSize="20sp" />
</android.support.v7.widget.CardView>
是一个整数,等于数据长度for(i in 0:nl){
df[i] = fread('RM.csv',skip = 1000*i, nrows =1000,
col.names = colnames(read.csv('RM.csv', nrow=1, header = T)))
}
我要做的是创建一个函数,它将跳过每1000行并读取下一行1000,并在达到nl时终止,这是原始数据的长度。
现在不一定只使用这种方法。
答案 0 :(得分:2)
您可以尝试将整个文件读入一个数据框,然后对您不想要的行进行子集化:
df <- read.csv('RM.csv', header=TRUE)
y <- seq(from = 0, to = 100000, by = 1) # replace the 'to' value with a value
seq.keep <- y[floor(y / 1000) %% 2 == 0] # large enough for the whole file
df.keep <- df[seq.keep, ]
这是一个相当混乱的演示,它表明上面的序列逻辑是正确的:
您可以检查生成的序列是:
0-999
2000-2999
4000-4999
etc.
如代码注释中所述,请确保生成足够大的序列以容纳数据框的实际大小。
如果您需要继续使用当前的方法,那么请尝试仅读取其他所有1000行,例如
sq <- seq(from=0, to=nl, by=2)
names <- colnames(read.csv('RM.csv', nrow=1, header=TRUE))
for(i in sq) {
df_i <- fread('RM.csv', skip=1000*i, nrows=1000, col.names=names)
# process this chunk and move on
}